プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~衝突判定の設定2~

IT

前回の記事の最後で言っていた、敵の弾が宇宙戦闘機に衝突した時の処理を今回書いていきます。

だいたい前回と同じなのでさらっと書いていきます。

それぞれにColliderの設定

まずは、Colliderを敵の弾と宇宙戦闘機に追加します。

宇宙戦闘機のCollider

3dShooting76

また、宇宙戦闘機には[Rigidbody]も追加してください。

3dShooting78

 

敵の弾のCollider

3dShooting77

 

宇宙戦闘機にOnTriggerEnterの実装

敵に実装したOnTriggerEnterを宇宙戦闘機にも追加していきます。


using UnityEngine;
using System.Collections;

public class StarfighterControl : MonoBehaviour {

float X_Speed = 1;
 float Z_Speed = 1;

public GameObject Prefab;
 public GameObject EnemyObject;
 public GameObject Explosion;
 float intervalTime;
 float enemyintervalTime;

// Use this for initialization
 void Start() {
 intervalTime = 0;
 enemyintervalTime = 0;
 }

// Update is called once per frame
 void Update() {

float vertical = Input.GetAxis("Vertical");

float horizontal = Input.GetAxis("Horizontal");

if (Input.GetKey("up")) {
 transform.Translate(0, 0, vertical * Z_Speed);
 }
 if (Input.GetKey("down")) {
 transform.Translate(0, 0, vertical * Z_Speed);
 }

 if (Input.GetKey("left")) {
 transform.Translate(horizontal * X_Speed, 0, 0);
 }
 if (Input.GetKey("right")) {
 transform.Translate(horizontal * X_Speed, 0, 0);
 }

intervalTime += Time.deltaTime;
 if (Input.GetKey("space")) {
 if (intervalTime >= 0.1f) {
 intervalTime = 0.0f;
 Instantiate(Prefab, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
 }
 }

enemyintervalTime += Time.deltaTime;
 if (enemyintervalTime >= 4.0f) {
 enemyintervalTime = 0;
 Instantiate(EnemyObject, new Vector3(transform.position.x, transform.position.y, transform.position.z + 200), Quaternion.identity);
 }

}

void OnTriggerEnter(Collider coll) {
 if (coll.gameObject.tag == "EnemyBullet") {
 Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
 Destroy(this.gameObject);
 }
 }
}

コードは、上記のモノです。

追加した部分もほぼ同じです。

指定するタグが[EnemyBullet]に変わったくらいです。

これに合わせて、敵の弾に[EnemyBullet]というタグをセットする必要があります。

3dShooting79

これがボクの敵の弾です。

なので、それにタグをセットしています。

まとめ

これで、敵の弾が当たった時に、自機(宇宙戦闘機)が爆発すると思います。

次回は、ゲームのスタートボタンと宇宙戦闘機が爆発した時にゲームオーバーの表示とリセットボタンの設置をしていこうと思います。

では。

コメント

タイトルとURLをコピーしました