HIROMARTBLOG

Unity、Cocos2d-xのこととか書けたらいいですね。

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

      2015/04/06

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

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

それぞれに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

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

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

まとめ

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

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

では。

 - IT, Unity , , , ,

広告

広告

コメントを残す

  関連記事

プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~カメラの設定~
no image
Windows環境でBitbucketとSourceTreeの導入(コミット・プッシュの使い方)
プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~細かな設定~
簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~導入編~
プログラミング初心者でも簡単!Unity5で3Dシューティングゲーム開発!!~敵の作成~
Windows環境でBitbucketとSourceTreeの導入(SSHキー作成とBitbucketへの登録)
簡単オンラインゲーム開発!!UnityとPhotonCloudで簡単実装~オブジョクトの同期~
Windows環境でBitbucketとSourceTreeの導入(Bitbucketの設定とSourceTreeのインストール)
Unityで作ったアプリをケーブルでAndroid実機で動かす方法
no image
Windows環境でBitbucketとSourceTreeの導入(フェッチとプルの使い方)
%d人のブロガーが「いいね」をつけました。