2017-04-11 5 views
-1

携帯電話用の2Dゲームを作成している 文字のために小さくて大きなジャンプが必要です 私はその違いを伝えるために苦労しましたタップ(小さなジャンプのため)と押し続け(大きなジャンプのため)。タップと押されたままのジャンプが異なる(C#)

+0

タップ自体を通過する入力時間を計算するだけです。 –

+0

countDownタイマーを使って試してみましたが、頻繁に両方のケースを適用して終了します –

+1

コミュニティに役立つ可能性があるので、ポストにコードを追加できますか?それ以外の場合は、あなたが試したことや試していることはわかりません –

答えて

0

キャラクターが空中で、速度が0でなく、上方向であるかどうかを確認できます。これが当てはまる場合、それはキャラクターが(ほとんどの場合、)ジャンプしたことを意味します。そして、これが当てはまる場合、短時間(ここではタイマーを使用してください)に、プレイヤーがまだ画面を押しているかどうかを確認します。まだスクリーンを押している場合は、大きなジャンプの高さに達するまでキャラクターに力を加える。

擬似コード:

if (player presses screen) 
{ 
    // Add small impulse to make the character jump to the "minimum jump height" 

    // Start timer  

    if (character's velocity is upwards and they are not grounded) 
    { 
     if (timer is greater than your chosen time) 
     { 
      // Add another impulse so character jumps to the "maximum jump height" 
      // Stop and reset timer 
     } 
    } 
} 

これは基本的な計画である、それは完璧ではないのですが、それはあなたが始める必要があります。これを行うには多くの方法があります。真に可変なジャンプ高さが必要な場合は、ImpulseではなくForceを使用することを検討してください。 UnityドキュメントのAddForceを参照してください。

注:FixedUpdate()内部ではなくUpdate()で物理学ベースのアクションを適用するためのより良い方法です。これは通常、Update()でプレイヤーの入力を確認したいのでもっと複雑になりますが、物理ベースのアクションの問題を避けるために必要なステップです。

関連する問題