gpt4 book ai didi

ios - 在移动它的 SKSpriteNode 时将 Velocity 添加到 SKPhysicsBody

转载 作者:行者123 更新时间:2023-11-29 11:35:59 25 4
gpt4 key购买 nike

现在我正在移动 SKSpriteNode通过在 func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) 期间改变它的位置.

我的问题是,当我移动 SpriteNode 时,它​​是 SKPhysicsBody的速度没有改变。因此当SpriteNode确实与另一个碰撞 SKSpriteNode那一秒SpriteNode只会被推来推去,而不会像您预期的那样真正反弹。

有办法解决吗?我已经在考虑手动将速度应用于 func didBegin(_ contact: SKPhysicsContact) 上的第二个 SpriteNode。但我不会真的对那种解决方案感到满意。

谢谢!

最佳答案

一般来说,在 SpriteKit 中,您应该避免将基于物理的运动与直接运动混合在一起。 基于物理的运动,我的意思是通过施加力/脉冲或直接设置节点的速度属性来移动节点的物理体。通过直接移动,我的意思是直接设置它的位置属性(这听起来像你正在做的)或使用 SKActionmoveTo:duration:.

因此,如果您已经在使用物理来移动节点,则应该继续使用物理来移动它,而不是直接改变它的移动。或者,如果您仅使用直接移动来移动节点,然后您想了解有关其速度的信息(例如您的情况下的速度),您将不得不编写自己的计算来计算对象在帧之间移动的距离.这是因为对象的运动不是由物理引擎执行的。

当然,您不必遵循这种做法。但是您可能会遇到与您遇到的问题类似的问题。

还有一点是,如果你想检测两个节点是否相互接触---但不相互碰撞---那么可以在物理体上使用直接运动。但在你的情况下,听起来你正在处理碰撞的物体,所以我建议坚持使用一种方法或另一种方法来保持整洁。

关于ios - 在移动它的 SKSpriteNode 时将 Velocity 添加到 SKPhysicsBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com