2015-09-11 2 views
0

У меня он настроен так, что мой плеер должен прыгать туда, куда я нажимаю на экран, однако он не сдвинется с места. Я triple проверил мой код и не нашел ничего плохого. Кто-то может помочь?Игрок не двигается при нажатии

Вот мой код для моего 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

Первый касание «touchhesBegan» ничего не делает. Свойство lastTouch получит только значение, пока вы двигаете пальцем о 'touchhesMoved'. Второй, который вы отпустите, вы устанавливаете его в nil 'touchesEnded'. –

ответ

0

Вы правы, говоря, что вам не нужны коды начала прикосновений, но от чего вы говорите, вы должны, вероятно. Я попытался бы просто установить местоположение объекта в касаниях, а затем обновить его при перемещении.

+0

Ждём попробовать. Что бы это изменило? –

+0

Это будет следовать за вашим движением. Если вы просто хотите, чтобы он двигался один раз, просто делайте прикосновения к нему. –

Смежные вопросы