好奇我将如何让SKSpriteNode在颠簸的地形上顺畅地行走(下图评估" Bumpy Terrain")
我还希望图像具有SKPhysicsBody。我怎么可能这样做?
答案 0 :(得分:3)
刚刚完成(在Unity中)基本前提如下:
在Sprite Kit中,从光线投射获取交叉点的唯一方法是使用SKPhysicsWorld类的enumerateBodiesAlongRayStart:end:usingBlock:
。如果你的角色只能直接走(也就是说他不会旋转以适应地形,而且地形没有"循环")你只需要检查Y坐标交点。
假设您的节点的位置在Y = 340,并且光线在Y = 310处相交,并且您的节点的高度为80,那么:
(340 - 310) + 80 / 2 = 70
然后70是距离你的玩家应该定位的地板的距离,确切地说,它是光线撞击地板的Y坐标(310)加上70,这给你Y = 380作为新的高度。当你走过飞机时,保持X坐标并改变Y坐标。
当然地平面需要是一个物理体,特别是使用边缘形状的身体。有一些工具可以让你从形状设计这些点,最突出的是PhysicsEditor。但首先,您可以尝试使用单个线段,以一定角度倾斜,以测试您的角色是否正确地向上或向下行走。
请注意,如果你正在使用物理学,你应该在确定地面命中后将物理体的速度设置为0,0,否则速度可能会累积,身体最终会从地板上掉落,或者可以&#39跳跃,或做其他奇怪的事情。