Unity 弾を打ってオブジェクトを飛ばす簡易FPSゲームを作ってみよう。 Unity学習25
今回は簡易FPSを作っていく方法です。本当に簡易的に
作るので内容はただ銃を一人称視点に取り付けて弾を発射して
オブジェクトを飛ばしていく方法です。
※動画での説明が好みの方は下記動画をご覧ください。
ブログ記事での説明がいい方はそのまま読み進めてください。
弾を打ってオブジェクトを飛ばす簡易FPSゲームを作ってみよう。
今回は本当に簡易に作っていくので
作っていきやすいかと思います。
一人称視点でのゲーム作りもあるんだなって
くらいで作って頂けたらと思います。
それではやっていきましょう!
プロジェクトは3Dで開いてください。
エディタ画面の上部にあるWindow⇨Asset Storeから
アセットストアを開いてください。
※アセットストアの使い方がわからない方は下記記事を参考にしてください。
www.unityprogram.info
検索窓よりStandard Assetsと検索して上記画像と
同じものをダウンロードしてインポートします。
※プラウザでのサイトのリンクも貼っておきます。
assetstore.unity.com
続いてアセットのインポートをしていきます。
今度はM4A1 PBRと検索してインポートしましょう。
今回使っていく銃になります。
※リンクは下記より。
assetstore.unity.com
銃のアセットは色んな種類があるので好きなもの使ってもいいですね!
エディタ画面に戻ったらまずスタンダードアセットのスクリプトの
記述が古いので少しだけ直していきます。
下記記事を参考にしてエラーの解消を行なってください。
www.unityprogram.info
ちなみに僕は今Unityのバージョンは、
2019 3.4f1を使っているのですがスタンダードアセットのアップデートでの
影響なのかバージョンの関係かわかりませんが一つのスクリプトを
直すだけで大丈夫でした。
※もちろんエラーは残りますが再生できれば影響ないかと思います。
出来上がっている画面からの説明になりますが、ご了承お願いします。
まず、Hierarchy内にある①の+をクリック⇨3D Object⇨②のPlaneとCubeを作成してください。
CubeはInspector内の一番下にあるAdd ComponentからRigidbodyを追加します。
PlaneはInspector内の③のScaleを全て10にして少し大きくしておきます。
Project内にある、先程インポートした①のStandard Assetsの▶︎をクリック
⇨Characters⇨FirstPersonCharacter⇨②のPrefabsをクリックして、
③のFPSControllerをドラッグして④のScene画面にドロップしてください。
FPSControllerが多分Planeに埋まっていると思うので、
地面よりも上に来る様に上に引っ張って移動させておきます。
いよいよ銃を取り付けていきます。
Project内にある、①のM4A1_PBRをクリックして、
②のM4A1_PBRをドラッグして、HIerarchy内にあるFPSController内の
③のFirstPersonCharacterに重なる様にしてドロップします。
そうすると④の様に、FirstPersonCharacterの子要素になると思います。
M4A1_PBRが反対向きになっている人は、Inspector内の
RotationのYの値を180と入力して元の向きに戻します。
Game内画面が⑥の様に銃が映る様に
移動させて調節をしてください。
少しややこしくなっていきますが頑張りましょう!
Hierarchy内の①の+をクリック⇨Create Emptyをくリックして②の空の
GameObjectを作成して名前をBulletにします。
②のBulletを③のM4A1_PBRに重なる様にドラッグ&ドロップして子要素にしてください。
②のBulletの位置は、銃口のの目の前に移動させてください。
また同じ様な手順で+⇨3D Object⇨④のSphereを作成して名前をBulletにします。
名前が同じなのがあってややこしいので自分の好きな名前に変えてみてください。
Inspector内にあるScaleの値を全部0.1にして⑥の様に小さい弾の様にします。
④のBulletをドラッグして、Project内の空いている所に
ドロップして⑦の様にプレハブ化します。
Hierarchy内にある④のBulletは削除してください。
次に⑧番にある、弾を発射するためのスクリプトを書いていきます。
Project内の自分が分かりやすい所で右クリック⇨Create⇨C# Scriptをクリックして
名前をBulletで作成します。
次のコードをコピー&ペーストするか同じ記述にしてください。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Bullet : MonoBehaviour { //GameObject型を変数bulletで宣言します。 public GameObject bullet; //Rigidbody型を変数rbで宣言します。 Rigidbody rb; //float型を変数thrustで宣言して100の値を入れます。 public float thrust = 100f; void Update() { //もしマウスボタンの左クリックが押されたら。 if (Input.GetMouseButtonDown(0)) { //GetComponentでRigidbodyを取得して弾をcloneで生成します。 rb = Instantiate(bullet, transform.position, transform.rotation).GetComponent<Rigidbody>(); //前方向にthrustの数字の分一度だけ力を加えます。 rb.AddForce(transform.forward * thrust, ForceMode.Impulse); } } }
⑧の先程作ったBulletスクリプトを、Hierarchy内にある②の
Bulletにドラッグ&ドロップしてください。
今度は弾が増え続けると動作が重くなってくるので時間が経つと
弾が消える様にします。
⑨のスクリプトを名前はBallで作成してください。
次のコードをコピー&ペーストするか同じ記述にしてください。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Ball : MonoBehaviour { void Update() { //3秒後に削除されます。 Destroy(gameObject,3f); } }
コレだけです笑笑
出来上がった⑨のBallスクリプトを
Project内にあるプレハブ化した⑦のBulletに
ドラッグ&ドロップしてアタッチしてください。
コレが最後の作業です!!
Hierarchy内にある①のBulletをクリックして、Inspector内にある
Bulletスクリプトの③のBallの所にProject内にあるプレハブ化した
Bulletをドラッグ&ドロップしてください。
最後に④のThrustの値を1000にして弾の
発射速度を速くします。
この値は好きな様に変えてみてください。
※今回名前をBulletと何個も使い回して分かりづらく
なってしまったので自分の分かりやすい様に名前を変えてみてくださいね!
それでは再生してみましょう!!
こんな感じでオブジェクトが吹っ飛んでいくかと
思います。
自分が好きな様にステージを作ってみて
吹き飛ばしてストレス解消してください!笑笑
ご視聴ありがとうございました!
※Unityを学習していきたい人は下記カテゴリからご覧ください。少々めんどくさい感じです。
www.unityprogram.info
※オススメのアセットの紹介は下記カテゴリから見てみてください。気に入るアセットがあるはずです。
www.unityprogram.info
※本格的に3Dゲームを作っていきたい方は下記カテゴリを参考にしてください。
www.unityprogram.info
※実際に使って学習した学習本の紹介は下記カテゴリをご覧ください。
www.unityprogram.info
※初心者に向けた簡単な記事は下記カテゴリをみってね!
www.unityprogram.info