Я хочу увеличивать CGFloat
каждый раз, пока экран прослушивается.
Поплавок имеет заданное максимальное и минимальное значение.
Я попытался выполнить это предложение: qaru.site/info/384184/...
Однако это только увеличивает CGFloat после того, как сделан сенсор или достигнут максимум. Я хочу увеличить CGFloat во время прикосновением, что означает, что чем дольше вы будете касаться выше Jump/CGFloat.
Проблема, вероятно, лежит в импульсе, который вы не можете изменить после применения. Это означает, что после того, как "Игрок" получит импульс 20, и экран будет больше касаться, Float может увеличиться, но импульс не будет.
Если вы посмотрите на мой текущий код, импульс будет установлен максимум при касании экрана, но если он будет выпущен, действие должно быть удалено. Однако это не работает, импульс не останавливается.
Я знаю, что вы можете установить скорость тела при значении после нажатия, и если пресса закончила скорость обратно на 0, так что она останавливает "прыжок", но это выглядит не совсем гладко как это было бы с импульсом.
Есть ли у кого-нибудь решение?
struct Constants {
static let minimumJumpForce:CGFloat = 20.0
static let maximumJumpForce:CGFloat = 60.0
}
class GameScene: SKScene, SKPhysicsContactDelegate {
var force: CGFloat = 20.0
func longPressed(longPress: UIGestureRecognizer) {
if (longPress.state == UIGestureRecognizerState.Began) {
println("Began")
self.pressed = true
let HigherJump = SKAction.runBlock({Player.physicsBody?.applyImpulse(CGVectorMake(0, Constants.maximumJumpForce))})
self.runAction(HigherJump , withKey:"HighJump")
}else if (longPress.state == UIGestureRecognizerState.Ended) {
println("Ended")
self.pressed = false
self.removeActionForKey("HighJump")
}
}
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
}
}
override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {
for touch in (touches as! Set<UITouch>) {
let location = touch.locationInNode(self)
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}