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







コメント