Unityで脱出ゲームの作り方(6)「物体を滑らかにアニメーションで動かす」
2015/08/02
第6回は物体のなめらかなアニメーション(トゥイーン)を実装します。
脱出ゲームにおいてアニメーションは絶対必須というわけではありませんが、
あるとぐっとゲームとして見栄えが良くなるので、ぜひ取り入れておきたい技術ですね。
iTweenをいれよう
アニメーションする上で便利なiTweenというプラグインを入れましょう
Window > Asset store でアセットストアの画面を開きます。
アセットストアとはUnityで使えるプラグインや3Dモデルのセットなどが有料/無料でダウンロードできるショップです。
iTweenで検索します。有料版のiTweenもありますが、ここでは無料版です。
全てにチェックが入ったままでOKです。右下のImportをクリックします。
インポートが終わるとPluginsフォルダが増えていますね。これがiTween一式です。
カギを天井から床に移動(落下)させよう
そして赤スイッチをクリックした時の処理をiTweenに置き換えます。
public void searchRoom(){ selectedGameObject=null; ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 10000000,1 << 8)) { selectedGameObject = hit.collider.gameObject; switch(selectedGameObject.name){ case "redSwitch": iTween.MoveTo(item_key,iTween.Hash( "z",0.6, "time", 0.2, "islocal", true, "easeType", iTween.EaseType.linear )); break; } } }
iTween.MoveToで移動ができます。
これでカギが0.2秒かけてz=0.6へ移動、つまり天井から床に落ちてきます。
↑の動画だとカクついてますが、実際は滑らかに見えています…
ついでにカメラの回転も滑らかにしよう
iTweenは移動だけでなく回転もできます。
これまでは左ボタンを押すとカメラがパッと回転していましたが、これも滑らかにしてみましょう。
turnLの中身をまるっと書き換えます。
public void turnL () { switch(standName){ case "centerN": iTween.RotateTo(GameObject.Find("mainCamera"),iTween.Hash( "x",0, "y",270, "z",0, "time", 0.4, "islocal", true )); iTween.MoveTo(GameObject.Find("mainCamera"),iTween.Hash( "x",-1, "y",7, "z",-20, "time", 0.4, "islocal", true )); standName = "centerW"; break; case "centerW": iTween.RotateTo(GameObject.Find("mainCamera"),iTween.Hash( "x",0, "y",180, "z",0, "time", 0.4, "islocal", true )); iTween.MoveTo(GameObject.Find("mainCamera"),iTween.Hash( "x",-1, "y",7, "z",-20, "time", 0.4, "islocal", true )); standName = "centerS"; break; case "centerS": iTween.RotateTo(GameObject.Find("mainCamera"),iTween.Hash( "x",0, "y",90, "z",0, "time", 0.4, "islocal", true )); iTween.MoveTo(GameObject.Find("mainCamera"),iTween.Hash( "x",-5, "y",7, "z",-20, "time", 0.4, "islocal", true )); standName = "centerE"; break; case "centerE": iTween.RotateTo(GameObject.Find("mainCamera"),iTween.Hash( "x",0, "y",0, "z",0, "time", 0.4, "islocal", true )); iTween.MoveTo(GameObject.Find("mainCamera"),iTween.Hash( "x",-6, "y",7, "z",-26, "time", 0.4, "islocal", true )); standName = "centerN"; break; } }
再生するとこんな感じです。動きがつくとなかなか見栄えがよくなりますね。
関連記事
-
Unityで脱出ゲームの作り方(2)「UnityにSketchupの3Dの部屋をインポート」
第2回からはUnityという今話題のゲーム作成ソフトを使っていきます。 とても高 …
-
Unityで脱出ゲームの作り方(5)「3Dオブジェクトをクリックで取得」
これまでのパートでUIボタンのクリックはできました。 このパートでは上の画像の、 …
-
Unityで脱出ゲームの作り方(3)「部屋の中を移動する・下準備編」
このパートでは脱出ゲーム定番の移動ボタンを追加します。 画面上に固定で表示するU …
-
Unityで脱出ゲームの作り方(4)「部屋の中を移動する・UIでカメラ回転編」
第4回はカメラ回転のスクリプトを実際に書いていきます。 上の画像のようにぐるりと …
-
Unityで脱出ゲームの作り方(7)「アイテムリストを作る」
前回まででスイッチを押すとカギが降ってくるようにしました。 ここで落ちてきたカギ …
-
Unityで脱出ゲームの作り方(8)「アイテムを選択(装備)する」
アイテムリストクリックでアイテムを装備する アイテムリストのカギをクリックしたら …
-
Unityで脱出ゲームの作り方(1)「3Dの部屋を作る」
Unityで脱出ゲーム講座 初回は3Dの部屋づくりからはじめます。 このパートで …