オブジェクトの移動をアニメーションで実現
2Dのキャラクタのアニメーションといえば、スプライトアニメーション(パラパラ漫画)を想像しますよね
Unityでは、Animationの機能を使って、移動もできます
アニメーションでの移動の様子
[M]キーを押下すると、CubeがX軸方向へ移動する様子です
シーン構成(最終形)
Animatorとスクリプトがアタッチされています
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.13.48-1024x664.png)
アニメーションクリップ(AnimationClip)の作成
Animationウィンドウで作成(X軸方向への移動)
2Dのスプライトアニメーションの作成経験があれば、ウィンドウを表示するところまでは同じなので、そのように進めてください
一応、キャプチャ内に手順を入れています
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-8.37.41-2-1024x657.png)
Animationウィンドウで作成(アイドル:何もしない状態)
アニメーションの追加登録のイメージです
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-10.16.44-1024x657.png)
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-10.18.42-1024x604.png)
idleという名前でファイル保存(画面はMacです)
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-10.20.07-1024x350.png)
作成しました
今回はアイドルなので何も変更しません
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-8.36.56-1-1024x657.png)
Animatorの登録
Animatorウィンドウタブをクリックします
Sceneタブと同じところにあります
条件式用のパラメータ(引数)の登録
パラメータはこの画面で登録します
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.17.49-1024x664.png)
状態遷移をビジュアルで登録
アイドル状態からX軸移動に遷移する条件を登録します
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.20.50-1024x664.png)
MoveCheckスクリプト
using UnityEngine;
public class MoveCheck : MonoBehaviour
{
Animator animator;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.M))
{
animator.SetBool("isMove", true);
}
}
}
(参考)Animationウィンドウの操作詳細
表示を画面にちょうど収まるようにするには
画面を見やすく(操作前)
上の方に小さく表示されていますので、マウスカーソルをグラフ中央に移動して(クリックはしない)、Fキーを押下
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.27.50-1024x657.png)
画面を見やすく(操作後)
薄いですが、赤いラインが画面中央いっぱいに拡大表示される様子がわかります
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.29.46-1024x657.png)
直線的にアニメーションさせる(リニアに)
アニメーション終わりの位置(タイムライン)にキーフレームを打ちます
PositionXを選択して、0.6秒後を選択
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.30.52-1024x657.png)
キーフレームを打つアイコンをクリックすると、キーフレームアイコンが追加されます
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.34.19-1024x657.png)
アニメーション終了位置でxが3移動するように登録
登録後、[F]キーで画面描画を見やすくするといいです
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.51.57-1024x657.png)
アニメーションを直線にする
このままでは、ぬるっと動くので直線的に動くようにします
まず、始点を変更してみましょう
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.39.38-1024x817.png)
終点も同じく設定します
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.40.56-1024x480.png)
結果、直線になりました
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.41.39-1024x657.png)
(参考)Animatorウィンドウでのパラメータの登録方法詳細
Animatorウィンドウで登録します
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.57.32-1-1024x664.png)
パラメータ(引数)の型を選択
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.59.05-1024x611.png)
パラメータの名前を登録
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-9.59.47-1024x664.png)
この名前はコードで使うことになります
チェック(有効)にする場合、次のようにコードを記述します
SetBool("isMove", true);
bool型はfalseを設定するまで、trueのままです
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-10.00.30-1024x664.png)
パラメータの型でTriggerを選択した場合
次のようにトリガーをセットできます
このステートメントが実行された後、isMoveはまたfalseになります
一度切りで終えたい場合に使いますキー入力でInput.GetKeyDownのような感じですね(押した時1回だけ有効)
SetTrigger("isMove");
(参考)当たり判定が必要な場合
当たり判定を行う(OnCollisionイベントやOnTriggerイベント)場合、衝突するどちらかにRigidbodyコンポーネントが必要になります
相手側にRigidbodyコンポーネントがアタッチされていれば問題ありませんが、こちらに必要な場合、次の設定が必要です
移動を物理的な力によっていないため、物理挙動の計算をさせないようにします
具体的には、次に示すように、IsKinematicをチェック(true)にします
![](https://soft-rime.com/wp-content/uploads/2022/08/スクリーンショット-2022-08-10-13.03.56.png)
ディスカッション
コメント一覧
まだ、コメントがありません