2017-04-02 17 views
0

私はキューブを持っていて、キューブがパイロンから別のパイロットにジャンプするゲームを作りたいと思っています。今、私は、キューブが一定量以上それにとどまると、時間の。このアニメーションをどうすればいいですか?また、このジレンマをどうやって解決する必要がありますか?

私は物理学や剛体を使いたくないのですが、次のパイロンをクリックするのにtransform.positionRaycastを使用しています。キューブをジャンプさせたい、私はアニメーションを使いたいので、現在のパイロンに所与の時間量があれば、そのパイロンはそれと一緒にキューブを取ることになります。

問題は、私は何をやるべきか、どこから始めたいのか分からないことです。団結のアニメーションに関して私はアニメーションクリップのやり方しか知りません。

私は他のことをすることを学ぶだろうが、実際にはどのようにこの問題にアプローチするのか、どのようなテクニックを使って目的の結果を得るべきか、どのようにすればよいのか?

+0

あなたのパイロンが落ちる必要があることを考慮して、3秒間カウンターを作ってから、パイロンが 'transfrom.position.y'を0に変更します。 'アニメーション'効果を得るには、' Vector3 .Lerp'はパイロンを動かす働きをします。私は 'RigidBody'を使用することを推奨しますが、これはすべてをもっと簡単にするでしょう。 – Hristo

答えて

0
  1. 最初に、キューブがパイロンにあるかどうかを検出する必要があります。
  2. そうであれば、タイマーを開始する必要があります。
  3. タイマーが0に達すると、パイロンが下がります。

キューブが(に上陸した)でパイロン衝突したかどうかを検出するためにOnCollisionEnterを使用することができます:あなたはcoroutineを使用してカウントダウンタイマーを開始することができ

void OnCollisionEnter(Collision col) 
{ 
    // Check if it is the cube that has collided. 
    if (col.gameObject.name == "Player") // Make sure to assign the Player Tag to the cube 
    { 
     // Start countdown timer. 
    } 
} 

を。 クラスの先頭にusing System.Collections;を追加する必要があります。

は、ゲームが何かを行う前に、3秒間待つようになります。このコードStartCoroutine(MyCoroutine());

IEnumerator MyCoroutine() 
{ 
    // Wait for 3 seconds. 
    yield return new WaitForSeconds(3f); 

    // Make the pylon fall now. 
} 

を使用して、あなたのコルーチンを呼び出します。あなたはパイロンを落とす方法はあなた次第ですが、RigidBodyを使用してisKinematicをtrueからfalseに設定することができますが、物理を使用したくないと言われているので、Transform.positionを使用してパイロンを下方向に変換できます。

これはあなたの作業を開始するはずです。

+0

ありがとうございます! –

関連する問題