前回の記事の最後で言っていた、敵の弾が宇宙戦闘機に衝突した時の処理を今回書いていきます。
だいたい前回と同じなのでさらっと書いていきます。
それぞれにColliderの設定
まずは、Colliderを敵の弾と宇宙戦闘機に追加します。
宇宙戦闘機のCollider
また、宇宙戦闘機には[Rigidbody]も追加してください。
敵の弾のCollider
宇宙戦闘機に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]というタグをセットする必要があります。
これがボクの敵の弾です。
なので、それにタグをセットしています。
まとめ
これで、敵の弾が当たった時に、自機(宇宙戦闘機)が爆発すると思います。
次回は、ゲームのスタートボタンと宇宙戦闘機が爆発した時にゲームオーバーの表示とリセットボタンの設置をしていこうと思います。
では。
コメント