2016-08-22 4 views
3

SwiftでジャンプするSKShapeNodeがあるXcodeにこのゲームがあります。しかし、私は、このジャンプをプレイヤーが触れるように釣り合わせるようにしたいと思います。したがって、小さなタップは小さなジャンプを得、より活発なタップはより高いジャンプを得る。どのようにこれを行うことが可能です(私は3Dタッチオプションが欲しくないと思います)?スウィフトでタッチ圧力(力)を検出する(SpriteKit)

答えて

1

通常、ゲームのこの種のことは、印刷機のタイミングを調整し、それに応じてジャンプの高さを変更することによって行われます。 (これはまた、2Dプラットフォームゲームで物理学を使用することが、この種のものにとっては難しいことです)。

スーパーマリオのようなゲームでは、タッチを押すとすぐにジャンプ移動の開始が始まるようになっています。その後、ある時間が経過すると(文字がジャンプの「途中で」上にあるため)、タッチがまだダウンしているかどうかを確認します。もしそうならジャンプアニメーションを上向きにすることができます。タッチが解除されたら、再びジャンプを開始します。

このように短いタッチは小さいジャンプですが、長いタッチは高いジャンプです。

あなたは、現時点でsmallJumpActionbigJumpActionを持っているなら、何を行う可能性は...小さな部分に

すぐに、その後、トリガされbeginJumpAction ... smallJumpEndActionbigJumpEndActionをそれを打破です。これは、シーケンスアクションを行うことができる

...このようなとにかく

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

ありがとうございました!それは私が思っていたもので、あなたは私の考えを完全に表明しました!ありがとう! –

関連する問題