【问题标题】:How to remove physicsBody/ stop responding to gravity after sprite reaches a specific position?sprite到达特定位置后如何移除physicsBody/停止响应重力?
【发布时间】:2017-06-09 19:09:45
【问题描述】:

所以我希望我的精灵随着重力移动,直到它到达特定位置,然后它应该停止响应重力并停留在那里。我怎样才能做到这一点?提前致谢

我希望它在到达目标位置后停止

sprite.physicsBody = SKPhysicsBody(circleOfRadius: sprite.size.width/2)
if sprite.position == newPosition {
sprite.physicsBody?.affectedByGravity = false}

没用

【问题讨论】:

  • 那么它应该在某个点停止吗?或者与另一个精灵碰撞然后停止?
  • 你可能还想写一些代码来展示你是如何配置你的精灵的。
  • 为什么不直接使用诸如 moveTo 或 moveBy 之类的 skaction?如果你不介意我问
  • 这段代码在什么函数中?您必须非常幸运,您的精灵的position 等于某些特定的CGPoint - 它们非常小。如果精灵“包含”newPosition 或使用 sicvayne 建议的 SKAction,您最好检查 update()

标签: ios swift sprite-kit skphysicsbody skscene


【解决方案1】:

尝试做这样的事情

 override func update(_ currentTime: TimeInterval) {
    //In this case, you can just change self.size.height/2 with whatever position you want.
    if sprite.position.y <= self.size.height/2{

        sprite.physicsBody?.affectedByGravity = false
        sprite.physicsBody?.isDynamic = false


    }


}

在这种情况下,我创建了一个精灵,它位于顶部,重力设置为 true。在override func update 中,我声明一旦我的精灵到达这个特定位置,我希望它是静态的。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    相关资源
    最近更新 更多