У меня он настроен так, что мой плеер должен прыгать туда, куда я нажимаю на экран, однако он не сдвинется с места. Я 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)
}
}
Ну, с одной стороны, вы на самом деле не пытаетесь вызвать прыжок при нажатии на его внешний вид, скорее, когда вы говорите об этом. –
Ну, да, но когда я делаю этот первый щелчок, мой игрок должен прыгать, но его просто не двигается. Я сделал что-то не так? –
Первый касание «touchhesBegan» ничего не делает. Свойство lastTouch получит только значение, пока вы двигаете пальцем о 'touchhesMoved'. Второй, который вы отпустите, вы устанавливаете его в nil 'touchesEnded'. –