【问题标题】:Need a right and left buttons to move a sprite on the x axis需要左右按钮在 x 轴上移动精灵
【发布时间】:2016-12-24 06:26:51
【问题描述】:

我已经搜索过,我只能找到通过滑动/拖动使其移动的东西。我是在XcodeSprite-Kit 上制作游戏的初学者,到目前为止我做得很好,说实话比预期的要好。

但我似乎无法弄清楚如何在点击左右按钮时让精灵左右移动。我制作了左边的SKSpriteNode 和右边的SKSpriteNode(我不认为这是正确的),它们显然出现在我想要的地方,但我不知道如何让它们被触摸并使精灵移动。

对不起,如果这是一个非常业余的问题,答案可能很明显,但我遇到了麻烦。

【问题讨论】:

  • 移动精灵的一般想法是影响它们的位置属性或它们的速度矢量(sprite.physicsBody.velocity)。您通过将位置属性设置为新值来直接更改位置属性,或者间接使用像 Mina 指出的 SKActions。在物理方面,您可以通过将速度矢量设置为新值来直接更改速度矢量,并通过向物理实体施加脉冲或力来间接更改速度矢量。这些是需要牢记的基础知识。

标签: swift sprite-kit swift3 skspritenode


【解决方案1】:

有很多关于移动精灵的教程,从这个raywenderlich 教程开始。 您必须为您的精灵设置名称并在 touchesBegan 函数中处理移动(使用此 thread

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in (touches) {
        let positionInScene = touch.location(in: self)
        let touchedNode = self.atPoint(positionInScene)
        if let name = touchedNode.name {
            if name == "leftButton" {
                //move to left
            }
            if name == "rightButton" {
                //move to right
               let moveAction: SKAction = SKAction.moveBy(x: 15, y: 0, duration: 1)
               yourNode.run(moveAction)
            }
        }
    }
}

【讨论】:

  • 它的工作原理,直到我按下一个“按钮”,然后它立即崩溃。我不确定这么简单的事情的问题出在哪里
  • 添加异常断点以获得更好的崩溃信息并告诉我们
  • 好的,我让它不会崩溃,但玩家仍然没有移动,我没有为玩家编码一个位置,它在中间锚点,不确定是否有任何原因。
  • 只要你点击右键,它就会向右移动 15 个点。如果您只想按一次按钮,而玩家仍然在移动它需要进行一些更改,请告诉我您到底想要什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2021-11-12
  • 1970-01-01
  • 2012-10-08
相关资源
最近更新 更多