Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sprite kit SPriteKit从不同角度处理碰撞行为_Sprite Kit_Skphysicscontact - Fatal编程技术网

Sprite kit SPriteKit从不同角度处理碰撞行为

Sprite kit SPriteKit从不同角度处理碰撞行为,sprite-kit,skphysicscontact,Sprite Kit,Skphysicscontact,我正在制作游戏,在游戏中,我需要不同侧面的不同碰撞行为, 假设有一个角色从下侧碰撞到任何其他障碍物时,它的行为将有所不同 当它在顶部与任何其他障碍物或物体碰撞,而障碍物或物体在其下方时,我需要不同的行为, 实现它的最佳方式是什么。-(void)didBeginContact:(skphysiccontact*)联系在我的场景中有什么帮助 谢谢您甚至不需要联系人。确定接触对象后调用的方法可以访问接触节点。因此,您可以只比较x和y位置并相应地处理它们。然后可以忽略collisionBitMask并在

我正在制作游戏,在游戏中,我需要不同侧面的不同碰撞行为,

假设有一个角色从下侧碰撞到任何其他障碍物时,它的行为将有所不同

当它在顶部与任何其他障碍物或物体碰撞,而障碍物或物体在其下方时,我需要不同的行为,

实现它的最佳方式是什么。
-(void)didBeginContact:(skphysiccontact*)联系
在我的场景中有什么帮助


谢谢

您甚至不需要联系人。确定接触对象后调用的方法可以访问接触节点。因此,您可以只比较x和y位置并相应地处理它们。然后可以忽略collisionBitMask并在contact调用的方法中复制冲突

引导我走向正确的方向


skphysiccontact为您提供了联系人developer.apple.com/library/ios/documentation/SpriteKit/…检查联系人与nodeA和nodeB位置的关系。即,如果posA.xcontactpoint.x,则触点位于节点EA的右侧。

SKPhysicContact提供触点检查,其中触点与节点EA和节点B位置相关。也就是说,如果posA.xcontactpoint.x,联系人就在nodeA的右边。谢谢你的想法很有帮助。还有一点与我的问题无关,但我有点困惑,那就是决定bodyA的categroybitmask,和SkphysicsContact中的bodyB。或者简单地说,什么标准决定接触的身体是contact.bodyA还是contact.bodyB?ThanksbodyA和bodyB不是确定性的,所需的节点可能是A一次,B下一次。您的代码必须处理这两种情况。位掩码不影响节点A和节点B的顺序。skphysicsbody类参考中解释了位掩码的工作原理。