キャラクターを動かすときは、transformとrigidbodyを使う2種類の方法があります。
位置を直接設定して移動させるやりかた(transform)は、重力を無視した方法です。
力を加えて移動するやりかた(rigidbody)は、重力世界の自然な移動方法といえます。
transform
絶対座標で移動
transform.Translate( 0.1f, 0.0f, 0.0f ); //現在の位置からワールドX座標に0.1移動させる
キャラクターから見た方向へ相対的に移動
transform.Translate( transform.forward * 0.1f ); //キャラクターを前方に0.1移動させる
transform.Translate( transform.right * 0.1f ); //キャラクターを右に0.1移動させる
transform.Translate( transform.up * 0.1f ); //キャラクターを上に0.1移動させる指定した座標へ向けて指定した量を移動する
transform.position = Vector3.MoveTowards (transform.position , new Vector3( 10, 10, 10) , 0.1f); //絶対座標の(10,10,10)に向かって0.1移動させる
振り子運動
transform.position = new Vector3( Mathf.Sin( Time.time * 2 ) * 5 , 0 , 0 );
毎秒1.5の速度で横方向へ移動
transform.position = new Vector3( Time.time * 1.5f , 0 , 0 ); //C#の小数には「f」を付けないとエラーになる
縦にぴょんぴょん
transform.position = new Vector3( 0 , Mathf.Abs( Mathf.Sin( Time.time * 6.0f )) , 0 );
拡大・縮小
transform.localScale = new Vector3( Mathf.Sin( Time.time * 6.0f ) + 1.5f , 1 , 1 );
回転
transform.Rotate ( 0 , 5 , 0 );
transform.Rotate ( 0 , 90.0f * Time.deltaTime , 0 ); //1秒間に90度回転
transform.Rotate ( new Vector3( 0 , 90.0f , 0 ) * Time.deltaTime ); //1秒間に90度回転
transform.Rotate ( new Vector3( 0 , 90.0f , 0 ) * Time.deltaTime , Space.World ); //1秒間に90度回転。ただしワールド座標のY軸で回転
回転
transform.rotation = Quaternion.Euler(45, 45, 0);
Y軸周りに回転
transform.rotation = Quaternion.AngleAxis (Time.time * 120 , new Vector3( 0 , 1 , 0));
回転の合成 (式の右項から回転が実行される)
transform.rotation = Quaternion.AngleAxis (Time.time * 120 , new Vector3( 0 , 1 , 0)) * Quaternion.AngleAxis (Time.time * 77 , new Vector3( 1 , 0 , 0));
rigidbody (要rigidbodyコンポーネント)
速度ベクトルを変更する
rigidbody.velocity = new Vector3( 2 , 0 , 0 ); //X方向に2の強さで押す
力を加える
transform.rigidbody.AddForce ( 2 , 0 , 0 ); //X方向に2の 力を加える