日曜プログラマーのUnity独学開発ブログ日曜プログラマーのUnity独学開発ブログ日曜プログラマーが独学でUnityでのゲーム開発にチャレンジ。学んだことや気づいたことをつづるブログです。ジャンプアクションゲームtowofu今回はプレイヤーの移動に伴うスクロールとカメラの移動を実装してみます。その前にいくつか下準備をしておきます。オブジェクトをプレハブ化する今、<Hierarchy>ウィンドウにいくつかのオブジェクトが並んでいますが、これはプログラミングでいうところのインスタンスのようなものです。本来クラスがあって、それをインスタンス化してゲーム内にオブジェクトを配置するのがよいはずなので、これらをプレハブ(クラスのようなもの)化しておきます。<Hierarhy>ウィンドウからそれぞれを<Project>ウィンドウにドラッグ&ドロップします。<Project>ウィンドウにオブジェクトと同名のアイテムができます。以降はこのプレハブをインスタンス化することで、ゲーム内にオブジェクトを配置していきます。ついでに、<Project>ウィンドウ、[Create][Folder]でそれぞれを種類ごとに分類しておきます。ここでは図のように整理しました。床を配置する一回<Hierarchy>ウィンドウからFloorを削除します。<Project>でFloorプレハブを選び、Transformを下記のように設定しなおします。5<Project>からFloorプレハブを、<Hierarchy>あるいは<Scene>にドラッグ&ドロップすると、床がインスタンス化されて表示されます。これを繰り返して、ゲームステージっぽく配置します。ここでは図のようにしてみました。プレイヤーを横移動させるコードを下記のように書き換えます。※略プレイヤーに合わせてカメラを移動させるここまでのステップでゲームを再生すると、プレイヤーが画面の右端にすぐに消えてしまいます。これはカメラがプレイヤーを追いかけていないからです。カメラを制御してプレイヤーを追いかけるようにします。※他にもプレイヤーが床の側面に張り付いてしまう問題がありますが、これは後で修正します。Camera”プレハブに適用します。コードは下記の通りです。Cameraに”MainCamera”タグを、それぞれ適用しておきます。※参照『二段ジャンプの実装』ここでゲームシーンを再生してみます。Player版)確かにカメラがプレイヤーについてきますが、上下にめまぐるしく動いてなんだか落ち着きません。そこで、最後に接地した床を基準にY座標を決めるように処理を変更します。}}ゲームを再生すると、床の高さに合わせてスムーズに上下にスクロールする様子が確認できるはずです。最初のタイプとどちらが適切かは、ゲームの内容などにもよりますが今回はこれで行くことにします。22:11コメントありがとうございます。すみません、記載をミスっていました。正しくは下記のコードになります。mainCamera.GetComponent<CameraControl>().SetCurrentFloor(collision.gameObject);※本文は修正しました。コメントをキャンセルメールアドレスが公開されることはありません。