2015-09-11 81 views
0

我已将其设置为让我的玩家跳到我点击屏幕上的任何位置,但是它不会让步。我三重检查了我的代码,找不到任何错误。有人可以帮忙吗?点击时玩家不移动

这是我为我的GameScene代码:

import SpriteKit 

var player: Player! 
var snowflake: Snowflake! 
var isFingerOnPlayer = false 
var gameOver = false 
var playerTouched = false 
var touching: Bool = false 
var lastTouch: CGPoint? = nil 
let xPlayerForce: CGFloat = 30 
let yPlayerForce: CGFloat = 40 
var touchPoint: CGPoint = CGPoint() 

class GameScene: SKScene, SKPhysicsContactDelegate { 

override func didMoveToView(view: SKView) { 
    player = Player() 
    addChild(player) 
    backgroundColor = UIColor.whiteColor() 
    snowflake = Snowflake() 
    addChild(snowflake) 
} 

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
} 

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) { 
    for touch: AnyObject in touches { 
     let location = touch.locationInNode(self) 
     lastTouch = location 
    } 
} 

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) { 
    lastTouch = nil 
} 

override func update(currentTime: NSTimeInterval) { 
    if let touch = lastTouch { 
    var xForce: CGFloat = 0.0 
    var yForce: CGFloat = 0.0 
    let xTouchOffset = (touch.x - player.position.x) 

    let yTouchOffset = (touch.y - player.position.y) 

    if xTouchOffset > 0.0 
    { 
     xForce = xPlayerForce 
    } 
    else if xTouchOffset < 0.0 
    { 
     xForce = -xPlayerForce 
    } // else we do nothing 

    if yTouchOffset > 0.0 
    { 
     yForce = yPlayerForce 
    } // here you can choose whether you want it to push 
    // the player node down, using similar code from the 
    // above if statement 

    let impulseVector = CGVector(dx: xForce, dy: yForce) 
    player.physicsBody?.applyImpulse(impulseVector) 
    } 
} 
+1

那么,首先,你并不是真的试图从它的外观中触发跳跃,而是当你移动你的手指时。 –

+0

嗯,是的,但是当我第一次敲击时,我的球员应该跳起来,但是它只是不动。我做错什么了吗? –

+2

第一个水龙头“touchesBegan”什么都不做。只要你移动你的手指关于'touchesMoved',你的lastTouch属性将只会得到一个值。你释放的第二个,你将它设置为无'touchesEnded'。 –

回答

0

你说你不需要的代码触摸开始是正确的,但是从你的意思是你或许应该。我会尝试设置触摸对象的位置开始,然后更新它在触摸移动。

+0

我试试这个。更新它会是什么样子? –

+0

它会跟随你的运动。如果你只是想让它移动一次,那么触摸就开始了。 –