2016-08-22 3 views
3

Итак, у меня есть эта игра с Swift на Xcode, где у меня есть SKShapeNode, который прыгает. Тем не менее, я хотел бы, чтобы этот прыжок был соразмерен на ощупь, который игрок делает. Следовательно, маленькая крана получит небольшой прыжок, и более бойкий получает более высокий прыжок. Как это можно сделать (помните, что мне не нужны 3D-параметры)?Обнаружение касания (силы) с быстрым (SpriteKit)

ответ

1

Обычно такого рода вещи в играх выполняются путем выбора времени нажатия и соответственно изменения высоты прыжка. (Это также объясняет, почему использование физики в 2D-платформерных играх сложно для такого рода вещей).

Способ, которым это делается в играх, таких как Super Mario, состоит в том, чтобы начать движение прыжка, как только нажимается сенсор. Затем через некоторое время (когда персонаж находится на полпути «вверх»), вы проверяете, не осталось ли прикосновение. Если это так, вы можете сделать анимацию перехода вверх. Если прикосновение отпущено, начните снова спрыгнуть.

Таким образом, короткое касание - это небольшой прыжок, но более длинное касание - это более высокий прыжок.

Если у вас есть smallJumpAction и bigJumpAction в данный момент то, что вы могли бы сделать, это разбить его на более мелкие части ...

beginJumpAction, который запускается сразу, а потом ... smallJumpEndAction и bigJumpEndAction.

Это может быть сделано с действием последовательности ...

let beginJumpAction = //move the player upwards slightly 
let smallJumpEndAction = //begin to move the player down 
let bigJumpEndAction = //move the player up a bit more and then move down 

let blockAction = SKAction.run { 
    if touchStillDown { 
     player.runAction(bigJumpEndAction) 
    } else { 
     player.runActgion(smallJumpEndAction) 
    } 
} 

player.runAction(SKAction.sequence([beginJumpAction, blockAction]) 

Нечто подобное в любом случае. Есть много способов приблизиться к этому, хотя :)

+0

Спасибо! Это то, о чем я думал, и вы прекрасно озвучивали мои мысли! Благодаря! –