Ios 仅将碰撞添加到节点的边界,允许精灵在节点内部自由移动
我正在制作一个游戏,在其中我“挖掘”地下,让一个球落下通过。是否可以允许该球在其内部时与节点的边界碰撞。根据下图,我的目标是在触地移动的情况下绘制一条隧道,让球在与隧道表面碰撞时落下Ios 仅将碰撞添加到节点的边界,允许精灵在节点内部自由移动,ios,swift,sprite-kit,skphysicsbody,Ios,Swift,Sprite Kit,Skphysicsbody,我正在制作一个游戏,在其中我“挖掘”地下,让一个球落下通过。是否可以允许该球在其内部时与节点的边界碰撞。根据下图,我的目标是在触地移动的情况下绘制一条隧道,让球在与隧道表面碰撞时落下 在spriteKit中,您有许多方法可以实现相同的目标 // add your rectangle size for example SKPhysicsBody(edgeLoopFrom: scene.frame) 但在你的情况下,正如图片中所示。你必须绘制隧道,你可以使用这些点绘制你的物理体,给它一个phys
在spriteKit中,您有许多方法可以实现相同的目标
// add your rectangle size for example
SKPhysicsBody(edgeLoopFrom: scene.frame)
但在你的情况下,正如图片中所示。你必须绘制隧道,你可以使用这些点绘制你的物理体,给它一个physicsBody,然后将isDynamic设置为false,这意味着身体不会被其他物理体移动。您仍然可以使用称为运动学的动作移动它
// After you draw your physicsBody set the isDynamic physicsBody property to false
tunnel.physicsBody.isDynamic = false
现在,物体将与其他物理物体碰撞,但不会受到任何碰撞或重力的影响我认为应该使用通道的两侧来定义SKShapeNodes,这样当球在通道中时,它就不会在节点内 在您的示例图片中,您将有2个节点-每个黑色区域一个节点
然后设置碰撞参数,使球不能通过形状我创建了一个常量:let edge=SKPhysicsBody(edgeLoopFrom:tunnel.frame),它被赋予了隧道的每个实例,但它仍然只是通过隧道落下到地面?你能把你的代码贴在你设置碰撞参数的地方吗?碰撞位掩码,分类位掩码等等。我试过了,但它非常紧张,球经常卡住。如果定义隧道边缘的路径不平滑,那么我可以看到这种情况。你可能想要一条平滑的曲线,接近粗糙的纹理。从隧道的外部形状看物体?@流动性是的,白色空间的边缘。