Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.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
Ios 仅将碰撞添加到节点的边界,允许精灵在节点内部自由移动_Ios_Swift_Sprite Kit_Skphysicsbody - Fatal编程技术网

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),它被赋予了隧道的每个实例,但它仍然只是通过隧道落下到地面?你能把你的代码贴在你设置碰撞参数的地方吗?碰撞位掩码,分类位掩码等等。我试过了,但它非常紧张,球经常卡住。如果定义隧道边缘的路径不平滑,那么我可以看到这种情况。你可能想要一条平滑的曲线,接近粗糙的纹理。从隧道的外部形状看物体?@流动性是的,白色空间的边缘。