【问题标题】:How to move node in the direction of another node如何向另一个节点的方向移动节点
【发布时间】:2016-04-18 19:44:55
【问题描述】:

我在 Stack Overflow 上找到了 this 答案,但我想对其进行修改,但我无法弄清楚。该问题的答案显示了如何使导弹朝着您手指的方向移动。但是,我希望它向另一个节点(在我的例子中是一艘船)的方向移动,这意味着它不是跟随我的手指,而是跟随这艘船。怎么能做到这一点?

非常感谢

【问题讨论】:

    标签: ios swift sprite


    【解决方案1】:

    很简单:

    1) 使用update 方法代替touchesMoved。

    2) 使用玩家的位置代替触摸位置。

    override func update(currentTime: NSTimeInterval) {
    
            let location = player.position
    
            //Aim
            let dx = location.x - missile.position.x
            let dy = location.y - missile.position.y
            let angle = atan2(dy, dx)
    
            missile.zRotation = angle
    
            //Seek
            let vx = cos(angle) * missileSpeed
            let vy = sin(angle) * missileSpeed
    
            missile.position.x += vx
            missile.position.y += vy
    }
    

    【讨论】:

    • 感谢您的出色回答。它工作得很好,但这是一个问题。当两个节点发生碰撞时,导弹的 zPosition 到处都是,这意味着它开始疯狂地旋转。我该如何解决这个问题?
    • 我尝试创建一个 if else 雄蕊,说如果他们触摸 zPosition 会改变,但这不起作用
    • @HarrisonR 好吧,当玩家和导弹发生接触时会发生什么取决于你……你必须实施接触检测并采取适当的行动(移除节点、制造爆炸等)。这只是一个如何实现寻找/瞄准逻辑的例子。超出此范围的任何内容都超出了链接问题的范围,也超出了此问题的范围。
    • 我明白,但我希望它在它们接触时停止旋转。我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2021-01-01
    相关资源
    最近更新 更多