Unity シューティングゲーム プレイヤー移動と弾の実装・生成[コピペOK](所要時間5分)
私は、ゲームエンジンであるUnityについて勉強をしてます。
そこで、その過程で学んだことについてこれから記していこうと思う。
のちに自分でも見なおせるように・・・
注意(動画でのburretはbullletに書き換えてください。)
プレイヤー移動の実装
プレイヤーオブジェクトを生成し、C#スクリプトを作ります。
(右クリック→create→C#スクリプト)
そしてそのC#スクリプトのUpdata関数の中に以下をコピペします。
if (Input.GetKey(KeyCode.UpArrow))
{
transform.position += new Vector3(0, 2f, 0) * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.DownArrow))
{
transform.position += new Vector3(0, -2f, 0) * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.RightArrow))
{
transform.position += new Vector3(2f, 0, 0) * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position += new Vector3(-2f, 0, 0) * Time.deltaTime;
}
これを保存し、プレイヤーオブジェクトに張り付けます。
これだけでキーボードの矢印キーでプレイヤーを操作できます。
弾の実装と軌道の設定
手順1(弾の発射位置を決める)
初めにプレイヤーの子オブジェクトとして空のオブジェクト(今回はfirepoint)を作ります。
子オブジェクトとしたことで、空のfirepointはプレイヤーと連動した動きをします。
firepointは弾の発射位置となるため、好みの位置に調節します。
手順2(弾の実装・軌道の設定)
次に、弾となるオブジェクト(今回はBullet)を生成します。
Bulletは生成しただけでは、動くことが出来ないので、
弾の軌道を設定するためbulletスクリプトを作り、Update関数に以下をペーストします。
transform.position += new Vector3(0, 5f, 0) * Time.deltaTime;
これにより、弾は上方向に飛ぶようになります。
(この際、xの値にsin関数などを導入すれば弾を波の様に動かすことも可能です。)
このスクリプトをBulletに張り付け、動画の様にプレハブ化します。
プレハブ化後のBulletオブジェクトは不要なので消してしまいます。
これで弾とその弾道は設定完了。
手順3(弾の生成)
最後に弾を生成するスクリプト(bullet controller)を作り以下のスクリプトを張り付けてください。
public Transform firepoint;
public GameObject BulletPrefab;
public float span = 0.3f;
private float Timecount = 0f;
void Update()
{
Timecount += Time.deltaTime;
if (Timecount > span)
{
Instantiate(BurretPrefab, firepoint.position, transform.rotation);
Timecount = 0f;
}
}
これをプレイヤーオブジェクトに張り付け、プレイヤーのinspecterビューで、
動画の様にBulletやfirepointを関連付けます。
これで弾の自動生成が可能です。
弾の発射間隔はinspecterビューのspanを変更することで変えることが出来ます。
他の記事
Unity オブジェクトを光らせる・シーンの変更方法[コピペOK](各所要時間4分)
Unity オブジェクト移動と鏡の作り方[コピペOK](所要時間5分)