3つの方法がある。
Transformコンポーネント
物理演算(重力)を無視して、位置、回転、大きさを変更できる。
フレーム毎に呼ばれる Update()で使うと良い。
例)
transform.positon = new Vector3(1, 2, 3);
transform.localPosition = new Vector3(1, 2, 3);
transform.Rotelte(new Vector3(0, 0, 10);
transform.localScale *= 3;
Rigidbodyコンポーネント
力、回転、加速度を加え、物理演算を行い動かす。
入力に関係ない処理は、物理演算毎に呼ばれる FixedUpdate()で使うと良い。
例)
var rigidbody = GetComponent<Rigidbody>();
rigidbody.MovePosition(new Vector(1, 2, 3));
rigidbody.AddForce(transform.forward * 100);
rigidbody.velocity = new Vector3(10, 0, 0);
CharacterControllerコンポーネント
接地、衝突(当たり)判定もできるキャラクターを扱うのに適した方法。
例)
var charactorController = GetComponent<CharacterController>();
characterController.Move(new Vector3(1, 2, 3));
characterController.SimpleMove(new Vector3(1, 2, 3));
フレーム毎に呼ばれるUpdate()は、実行しているパソコンの性能によって、たくさん呼ばれたり、呼ばれなかったりします。たくさん呼ばれると速く動くし、たくさん呼ばれないと遅く動きます。どのパソコンでも同じ速さで動かすために Time.deltaTime を掛算して使います。
例)
transform.Rotelte(new Vector3(0, 0, 10 * Time.deltaTime);
PlayerInputコンポーネント
Input.GetKey() で確認する。
例)
public class PlayerScript : MonoBehaviour
{
float speed = 3.0f;
void Update()
{
// Wキー(前方移動)
if (Input.GetKey(KeyCode.W))
{
transform.position += speed * transform.forward * Time.deltaTime;
}
// Sキー(後方移動)
if (Input.GetKey(KeyCode.S))
{
transform.position -= speed * transform.forward * Time.deltaTime;
}
// Dキー(右移動)
if (Input.GetKey(KeyCode.D))
{
transform.position += speed * transform.right * Time.deltaTime;
}
// Aキー(左移動)
if (Input.GetKey(KeyCode.A))
{
transform.position -= speed * transform.right * Time.deltaTime;
}
}
}
歩く、走るなどの動きをクリップとして保存ができ、再生することで、同じ動きを何回も実行できる。
作成手順
Projectの AssetsにAnimationsフォルダを作成
Hierarchyのオブジェクトを選択
Window/Animation/Animation を選択
Animation Window で、 [Create]ボタンを押す
名前を付けて、Animationsフォルダを指定して[保存]ボタンを押す
Animation Controller と Animation Clip が作成される
Projectの AssetsにAnimationsフォルダに作成した、Animation Controllerをダブルクリック
エディターにてタイムライン上に動きを指定
Animation Clip
アニメーションクリップを作成すると クリップを入れるファイル(*.anim)が作成される
Animation Controller
Animator Window で、クリップを State として配置される
State間をTransitionで結んで、Statte同士の行き来を設定する
キーボードを押したらTransitionを使うことをプログラムで記述できる
Animatorコンポーネント
動きをさせてたいオプジェクトにアタッチされる
3.5 Unity入門講座【アニメーション 後半】Mecanimの使い方
左がAnimation Controller
右が Animation Clip
Animator Window
Animation Controllerをダブルクリックすると開く
Animation エディター
Animation Clipをダブルクリックすると開く