SpriteKit的SKSpriteNode移动。

3

我有一些纹理...

placeForJump = SKSpriteNode(imageNamed: "placeForJump")
placeForJump.position = CGPoint(x: 512.346, y: 98.88)
placeForJump.size = CGSize(width: 166.407, height: 197.762)
placeForJump.zPosition = 2
self.addChild(placeForJump)

and character...

player = SKSPriteNode(imageNamed: "character")
player.position...
player.size...
player.zPozition = 3
self.addChild(player)

当我触摸到可以跳跃的材质时,我希望我的角色能够跳到这个地方,但我不知道如何做到。

当我触摸到带有placeForJump的材质时,我的角色会跳上去。

请帮忙解决。

1个回答

2
你可以通过检测跳跃位置的触摸,当用户触摸时运行一个移动角色的动作来实现此操作。
要检测用户是否触摸跳跃位置,您可以将以下代码添加到touchesBegan或touchesEnded函数中:
for touch in touches {
        let location = touch.locationInNode(self)
        if placeForJump.containsPoint(location) {
             print("It was touched")
        }
}

如果要在指定位置运行一个动作,可以使用以下 SKAction:

player.runAction(SKAction.moveTo(placeForJump.position, duration: speed)

这将以最短的方式将玩家节点移动到跳跃点,因此如果您希望它先上升再到达该位置,则可以按如下方式完成:
let highPoint = CGPoint(x: player.position.x + 50, y: player.position.y + 100)

let moveUp = SKAction.moveTo(highPoint, duration: speed)
let moveDown = SKAction.moveTo(placeForJump.position, duration: speed)
player.runAction(SKAction.sequence([moveUp, moveDown])

希望这能有所帮助。

你好!你的回答真的很有帮助。非常感谢你。 特别感谢这部分代码: let highPoint = CGPoint(x: player.position.x + 50, y: player.position.y + 100)let moveUp = SKAction.moveTo(highPoint, duration: speed) let moveDown = SKAction.moveTo(placeForJump.position, duration: speed) player.runAction(SKAction.sequence([moveUp, moveDown])) - Nexus S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接