我对swift相当陌生,并且一直致力于开发一款游戏以获得乐趣,并且我遇到了一些无法摆脱困境的东西。SpriteKit跳跃和移动问题
当按下运行按钮,字符用下面的函数
func move(dt: CGFloat) {
position.x += moveRate * dt
}
,并按下跳跃键时,字符用下面的函数
func jump() {
physicsBody?.applyImpulse(CGVector(dx: 0, dy: jumpRate))
run(jumpAnimation!)
}
都工作跳跃向前移动好,但考虑一下这个塞纳里奥。玩家正在跑步,然后在仍然移动时跳跃。在空中时,玩家释放移动按钮,玩家的x位置停止。这显然感觉非常不自然,我希望玩家的x位置能够缓解。
现在我也玩过physicsBody?.applyForce(CGVector(dx: 1000, dy: 0))
这个效果,但他似乎只是获得了越来越多的速度,而且你没有得到恒定的速度或“最大速度”这么说。
有人能跟我分享一些见解吗?我很想学习一些关于spritekit和游戏开发的知识。谢谢!
从我所看到的,在使用力量的同时手动改变位置的方式从未奏效。尝试只使用力量或通过影响其位置属性来改变节点的位置。另外,在update:method,每一帧内都应该调用施加的力(与applyImpulse方法不同)。 – Whirlwind
即使直接改变速度矢量,同时使用力量和冲动将会很好地发挥,所以也许你可以玩... – Whirlwind
一直玩的物理bodyBody更多的所有对象。它似乎很挑剔,但我用'applyForce'和'applyImpluse'创造了一个更好的结果。 “直接改变速度矢量”是什么意思? –