【发布时间】:2013-11-17 22:56:39
【问题描述】:
使用 SpriteKit,是否有可能有两个节点相互碰撞,但是当引入另一个节点时,物理的工作方式会发生变化吗?
例如,考虑以下 3 个节点:
- 对象
- Object_Hole
- 播放器
所以,一个包含玩家(橙色圆圈)和对象(蓝色矩形)的场景:
在上面的场景中,玩家(圆形)会受到重力影响并与物体(方形)发生碰撞。我通过使用物理体、类别和碰撞位掩码知道这是如何工作的。
现在,介绍 Object_Hole(绿色方块):
在上面的场景中,Object_Hole(绿色方块)覆盖了 Object(蓝色矩形)——它可以在同一个 z 平面或更高的平面上。
是否可以让Player(圆)上的physicsBody不与Object_Hole所在区域的Object发生碰撞?
如果有比添加覆盖节点更好的方法来实现这一点,请告诉我。否则有可能吗?
谢谢!
【问题讨论】:
-
那会很困难。如果你想让球穿过绿色盒子但又在蓝色盒子的侧面反弹,那么你必须将蓝色盒子分成两个物体,并根据绿色盒子的位置不断地重新创建它们以改变它们的形状。
-
有没有更简单的方法可以在 SpriteKit 的节点(带有物理体)中创建“洞”效果?
-
不,因为没有“洞”之类的东西。即使使用普通的 Box2D,您也必须做基本相同的事情。困难的部分不是让玩家通过,而是只在绿色圆圈区域禁用碰撞,同时允许玩家从另一面墙的侧面反弹。因为如果蓝墙是一个完整的物体,一旦你启用了与玩家的碰撞仅仅一帧,碰撞解决就会立即将玩家移出蓝框。
-
好的 - 感谢您的回答。
标签: ios sprite-kit skphysicsbody sknode