Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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 当只需要接触检测时,我可以使用SKAction移动动态物理体吗?_Sprite Kit_Skphysicsbody_Skaction - Fatal编程技术网

Sprite kit 当只需要接触检测时,我可以使用SKAction移动动态物理体吗?

Sprite kit 当只需要接触检测时,我可以使用SKAction移动动态物理体吗?,sprite-kit,skphysicsbody,skaction,Sprite Kit,Skphysicsbody,Skaction,我正在看一个教程,其中定义如下: 平面是具有动态物理体的精灵 平面移动是通过沿路径执行动作来完成的 子弹和飞机之间有接触检测 子弹是精灵,它的物理体是静态的,这在我看来并没有什么不寻常的 这里是到的链接以获取更多信息 问题: 当我们使用动作来移动物理实体时,我们如何设置实体的动力学属性有什么不同吗?因为子弹是静止的,但移动仍然没有问题 当我们遇到这样的情况时,我们不需要碰撞检测,只需要接触检测,我们不能通过施加力或脉冲来移动精灵敌人,什么是好的方法?这种方法正确吗 我认为这是一种很好的方法,但我

我正在看一个教程,其中定义如下:

平面是具有动态物理体的精灵 平面移动是通过沿路径执行动作来完成的 子弹和飞机之间有接触检测 子弹是精灵,它的物理体是静态的,这在我看来并没有什么不寻常的 这里是到的链接以获取更多信息

问题:

当我们使用动作来移动物理实体时,我们如何设置实体的动力学属性有什么不同吗?因为子弹是静止的,但移动仍然没有问题

当我们遇到这样的情况时,我们不需要碰撞检测,只需要接触检测,我们不能通过施加力或脉冲来移动精灵敌人,什么是好的方法?这种方法正确吗

我认为这是一种很好的方法,但我想充分了解当我们使用这种方法时到底发生了什么,是否存在任何缺点或可能的问题

有人建议我们不应该用动作来移动动态物理体。我知道我们不能在任何情况下都使用这种方法。例如,这不适用于带有其他物体的移动平台,因为平台上的物体和通过动作移动的平台之间没有正确的物理模拟。但在类似本教程的情况下,我们只需要对只能通过沿路径移动的动作移动的对象进行接触检测,我想这不是问题吧

静态意味着身体不受物理影响。这并不意味着它不能手动重新定位或移动。因此,如果某个对象设置为静态,它将参与物理模拟,但不受其影响。想象一架飞机撞上一座山。飞机是动态的,山只是坐在那里,即使它参与了物理学。但是你仍然可以用一个位置或者一个动作手动移动那座山

我不完全理解你的问题,但我会试一试

您可以使用position属性或actions手动移动physicsBody的,但您需要问问自己为什么要这样做。你通常不想这样做,因为他们绕过了物理模拟。如果你强迫它移动,首先使用物理体有什么意义。。对吧?


但是,如果你的身体像一个完全静止的通电体,你只想让它在一个圆圈里用一个动作移动,那就好了。你可能只想对子弹、通电等进行接触检测,而不想用物理方法来移动它。没问题。

嘿,哈莫比,谢谢你的快速回复。是的,我在考虑移动敌舰以及行动加电,因为我想沿着不同的预定义路径移动它们。用武力是不容易做到的。。。在这种特殊情况下,子弹、飞机或通电的物理实体用于接触检测,因为我相信这比使用CGRECT等方法实现我自己的接触检测更容易。谢谢你的解释和帮助。我只想知道这种方法是否合法:是的,如果你只需要接触检测,而不需要碰撞响应,比如防止物体相互穿透,由于碰撞改变方向等等,那么用动作移动物理物体是可以的。