【Unityの基礎】5.アニメーションカーブ

  【Unityの基礎】5.アニメーションカーブ

        皆さんこんにちは、ランパードです~~
        Unity 基本シリーズのブログへようこそ。私が学んだ知識はステーション B の Afa 先生から得たものです~ありがとう 

 (1) カーブ編集

(1) アニメーションカーブ

    先週、長方形をフレーム 0 の Y 軸位置 0 からフレーム 30 の Y 軸位置 3 まで移動する単純なアニメーションを作成しました。

    オブジェクトが等速で直線運動している場合、15 フレーム目では Y 軸の位置は 1.5、20 フレーム目では Y 軸の位置は 2 であることがわかります。これは実際に正しいのでしょうか。 

    残念ながら、フレーム 15 のオブジェクトの位置は確かに 1.5 ですが、フレーム 20 の Y 軸の位置は確かに 2.22 であり、事前に設定した等速運動と矛盾しています。次に、オブジェクトがどのような動きをしているかを把握する必要があります。現時点では を行っており今日の主人公のアニメーション曲線を導き出すことができます

    アニメーション エディタの左下には、ドープシートのデフォルト ボタンとカーブ モードがあり、カーブをクリックすると、オブジェクトが時間の経過とともにどのような動きをしているかを観察できます。

    上の図から、オブジェクトの Y 軸 (緑色) が曲線状の速度変​​化運動を行っていることがわかります。これは、以前のデータ検証の結果と一致しています。

(2) カーブ編集

    では、物体を一定の速度で動かしたい場合はどうすればよいでしょうか?

    とても簡単です。モーション カーブ上に 2 つの点があり、これらが 0 から 30 までのキー フレームであることがわかります。それを選択するだけです -> 両方の接線 (両側の接線) を選択 -> 線形 (線形)このモーションカーブが直線に設定されている場合、オブジェクトは等速度で直線的に移動します。 

    このとき、フレーム 20 のオブジェクトの Y 軸位置を見ると、2 に等しい結果が得られます。

(3) より多くのカーブ編集オプション

    両方の接線に加えて、左接線と右接線を設定することもできます。つまり、キーフレームの左右のモーション カーブに異なる値を設定します。

    Linear(直線)の他にFree(自由曲線)、Constant(一定)、Weighted(重力)などがあります。

    たとえば、こうすることでオブジェクトを再び曲線的に動かすことができます。

    定数を選択すると、特定のフレーム内でのみオブジェクトの位置を変更できます。

 (2)アニメーションイベント

(1) 子ノードのアニメーション

    次に、ヘリコプターのモデルを設計して、翼の回転を制御することによって学んだことを要約します。まずヘリコプター モデルをインポートすると、フロント ローターとテール ローターが含まれていることがわかります。

    前回のレッスンで学んだ内容に従って、航空機の 2 つの翼で使用するために、Animation フォルダーに 2 つの新しいアニメーション Top と Back を作成します。

    これらをそれぞれのコンポーネントに配置し、アニメーション エディタを開いて、変換コンポーネントの回転プロパティを調整します。

航空機の尾翼プロペラが 30 フレーム以内に 1 回回転できる    ように、尾翼アニメーションの X 軸回転角度をフレーム 0 では 0 に、フレーム 30 では 360 に設定します。

    しかし、次から次へとスタックしていることがわかります。これは明らかに私たちが望んでいるプロペラの回転効果ではありません。均一な速度で動かすにはアニメーション カーブ エディタを開いてください。

    上部の回転アニメーションもひょうたんの描画方法に従って設定できます。最後に、最終的な効果を見てみましょう。

(2) アニメーションコールバックイベント

   u3d のアニメーション コールバック イベントは、特定のフレームまで実行されたときに対応するコールバック関数を実行するように設定できます。具体的な操作方法は次のとおりです。

    アニメーション化されたマウントされたオブジェクトにハングする C# スクリプトを作成する

    コールバック関数を編集します。たとえば、航空機の尾翼が 20 番目のフレームに到達したときに回転を停止したいとします。

    void StopRotation()
    {
        Animation ani = GetComponent<Animation>();
        ani.Stop("Back");
    }

    次に、アニメーション エディターで、コールバックを実行するフレームを選択し、[アニメーション イベントの追加] を右クリックして、コールバック メソッドを選択します(見つからない場合は、C# スクリプトがオブジェクトにアタッチされ忘れられているかどうかを確認する必要があります) )    

さて、今日はここまでです、読んでくれてありがとう!
いいねとフォロー!

  

おすすめ

転載: blog.csdn.net/cooclc/article/details/133242856