我有两个精灵:
var player = SKSpriteNode()
var ball = SKSpriteNode()
我希望ball
移动到player
位置,虽然玩家也从左向右移动:
var playerMovementRight = SKAction.moveToX(CGRectGetMaxX(self.frame) - playerTexture.size().width / 2, duration: 2)
var playerMovementLeft = SKAction.moveByX(-self.frame.size.width + playerTexture.size().width , y: 0, duration: 2)
var playerMovement = SKAction.repeatActionForever(SKAction.sequence([playerMovementRight,playerMovementLeft]))
player.runAction(playerMovement)
这是我将ball
移至player
位置的代码:
var moveBall = SKAction.moveTo(player.position, duration: 0.06)
最后我"反弹"使用此代码将球带出屏幕:
var ballOut = SKAction.moveTo(CGPointMake(0, self.frame.size.height) , duration: 0.05)
我执行操作:
var shootBall = SKAction.sequence([moveball,ballOut])
player.runAction(shootBall)
我的问题是玩家正在移动,当球移动到玩家位置时,玩家处于另一个位置,因此球并没有真正移动到玩家身上#34;实际"位置。 有没有办法让球进入球员实际位置然后反弹#34;在屏幕外?
答案 0 :(得分:0)
设置全局变量并在PlayerPositionUpdate = player.position
中更新此变量,如:
shootBall
使用以下代码,您现在正在执行var moveBall = SKAction.moveTo(PlayerPositionUpdate, duration: 0.06)
let moveBallForever = SKAction.repeatActionForever(moveBall)
ball.runAction(moveBallForever)
操作 - 或者其他地方不会一遍又一遍地调用它...它应该只调用一次。或者更常见,但之后你必须删除其他操作。
update
然后添加一个if语句(也许在if ball.intersectsNode(player){
let ballOut = SKAction.moveTo(CGPointMake(0, self.frame.size.height) , duration: 0.05)
ball.removeAllActions()
ball.runAction(ballOut)
}
中):
PM> update-database -Verbose
也许像这样的东西......(我无法测试它)..尝试一下; - )