Unityで飛行戦を動かそう。
こんにちは、今日はUnityで飛行戦を動かしてみたいと思います。
そしてこれが今日やる飛行戦が飛んでいる様子です。
動画では、プロペラが回っていましたがこのページではとりあえず飛行戦を飛ばすところまでで、プロペラは回しません。
それでは作っていきたいと思います。
あ、ちなみにUnityを持ってない人はUnityのインストール方法があるのでこれを参考にUnityを入れてみてください。
Unityに飛行戦をインポートしよう!
まず最初にGitHubから飛行戦をダウンロードできるようにしましたのでそこから飛行戦をダウンロードして下さい。
ちなみにこれは僕がBlenderという3DCGソフトで作った飛行戦のモデルです。
この飛行戦は自由に使ってください。
次はUnity Hubを立ち上げます。
そして、プロジェクトというところを押します。
プロジェクトを押すと下の画像のような画面が出ます。
そして右上にある新規作成を押します。
新規作成を押すと下の画像のようなページが開きます。
このようなページに開いたら、プロジェクト名を打っていきます。
プロジェクト名は適当でいいですがテンプレートは3Dにしてください。
ちなみに私のプロジェクト名は「飛行戦を動かそう」にしました。
出来たら、右下の作成を押します。
そうするとUnityが立ち上がります。
ここから、Unityに飛行戦のモデルをインポートしていきます。
インポートの仕方は簡単です。
まず、先ほどダウンロードした飛行戦をUnityのAssetsにドロップします。
そうするとUnityのAssetsに飛行戦のモデルが追加されます。
次に、UnityのAssetsに追加された飛行戦モデルを次は左のHierarchyにドロップします。
そうすると3D画面に飛行戦のモデルが出ます。
ここまで出来たらとりあえずUnityに飛行戦を入れるのは完了です。
それでは次行きましょう。
FPS視点で作ってみよう!
先の動画のように、FPS視点で動作させていきます。
では、やっていきましょう
まず、Main Cameraを飛行戦の操縦席に移動させます。
Main Cameraは、クリックすると出てくる矢印をドラッグすることでオブジェクトを動かすことができます。
これを使ってMain Cameraを移動させていきます。
Main Cameraを下の画像のように移動しましょう。
次に飛行戦の親オブジェクトをMain Cameraにします。
Unity画面の左側にあるHierarchyで操作します。
hikouki2というオブジェクトをMain Cameraにドラッグします。
パソコンでファイルをフォルダへ移動する方法と似ていますね。
これで、Main Cameraが親になり、飛行機の動きに合わせて視点も動くようになります。
FPSっぽくなりましたね。
飛行戦を動かしてみよう!
まず最初にScriptをMain Cameraに追加します。
Main Cameraをクリックして、右側に表示されるInspectorのAdd Componentをクリックします。
そうすると、下の画像のようなものが出ます。
リストの下側にあるNew scriptをクリックします。
名前はなんでもいいのですが、僕の場合はSteeringにしました。
名前を付けたら、下にCreate and addというのがありますのでそれをクリックします。
AssetsにScriptが追加されるので、ScriptをダブルクリックしてVisual studioを立ち上げます。
ここから、C#で飛行戦を動かすコードを書いていきます。
まず最初に、Wキーを押したら前進するようにプログラムを書きます。
プログラムがこれです↓↓↓
void Update()は1フレームごとに呼び出されるメソッドです。
次はifです。ifはもしという意味ですね。
そして、ifの隣にある()は条件です。
()の中に条件を入れたりします。例えば、if(変数 == 2)はもし 変数が2と等しかったらという意味です。
なのでここで書いた条件、if (Input.GetKey(KeyCode.W))は「もしWキーが押された場合」という意味になります。
if文の中に書いた、transform.Translate(0, 0, 1);は座標Zを1つ増やすという意味です。
簡単なプログラムなので、上の画像を見ながら試してみてください。
書き終えたら、プログラムを保存してUnityの画面に戻り、画面上にある再生ボタンをクリックします。
画面がGame画面に切り替わります。
止めたい場合はもう一回再生ボタンを押すと止まります。
これでWを押して前に進むか確認してください。
前に進んだら成功です。
飛びましたか?でもなにもない世界で飛んでも寂しいので、背景を加えてみましょう。
島を出してみよう!
島も、僕が作った島です。
まず、僕のGitHubに島のオブジェクトファイルがありますので
そこからダウンロードしてください。リンクも張っておきます。
ダウンロードしたら、先ほどの飛行機のインポートの仕方と同じようにAssetsにドロップします。
そうするとAssetsにMapが追加されます。
このようなものです。 ↓↓↓↓↓↓↓↓↓↓↓↓↓
そして、Assetsに追加されたNew Terrainを3D画面にドロップします。
そうるすと、3D画面に島が出ます。
島の上を飛んでみましょう。飛べましたか?
次は、Wを離したら飛行戦が止まるようにしたいと思います。
先程と同じようにVisualStudioを開き、次のようなコードを追加してください。
先程と違うところは、if文の条件が「Input.GetKeyUp」になっているところですね。
これはwキーがUpしたら、つまりキーから指が離れたらという条件になります。
それでは次行きましょう。
FPSのようにエイムを作ってみよう!
マウスに合わせて動くエイムを作ってみます。
次のようなプログラムを書いてみましょう。
このプログラムではfloat変数であるhorizonatalSpeedとverticalSpeedでマウスポインタの速さを制御して、エイムのような動作を実現しています。
float h = horizonatalSpeed * Input.GetAxis("Mouse X");と
float v = verticalSpeed * Input.GetAxis("Mouse Y");は
マウスが動いたことを判定しています。
transform.Rotate(v, h, 0);
は、マウスの動きに合わせて画面を移動させます。
書き終わったら保存してUnityに戻りスタートさせてください。
マウスに合わせて画面が動きましたか?
動いたら成功です。
あとはマウスポインターが邪魔なひとは、
void Start()の中に、
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
入れるとGame実行の時にマウスポインターが非表示になります。
これで飛行戦を動かしてみようの講座は終わりです。
次は、この飛行戦のプロペラを回していきたいと思います。
あと、飛行戦の動きもプロペラに合わせて加速と減速も入れていきたいと思います。
あとは、重力も入れていきたいと思います。
わからないところがあったらコメントをください。
それではさようならぁぁ👋
この記事が気に入ったらサポートをしてみませんか?