③衝突した位置情報を取得して、その位置にエフェクトを発生させる方法

大型のボス敵やオブジェクトを攻撃する場合、「攻撃の当たった場所」にエフェクトを発生させる方法

スクリーンショット 2016-07-05 15.10.43

スクリーンショット 2016-07-05 15.10.47

*『foreach』を活用する。

・C#スクリプトを作成し、名前を「DestroyObject」に変更(既に同じ名前がある場合には名前の最後に「2」をつける)

using UnityEngine;
using System.Collections;

public class DestroyObject : MonoBehaviour {

	public GameObject effectPrefab1;
	public GameObject effectPrefab2;
	public int objectHP;

	// 「OnTriggerEnter」ではなく「OnCollisionEnter」で書くのがポイント
	void OnCollisionEnter(Collision other){
		if(other.gameObject.CompareTag("Shell")){

			objectHP -= 1;

			if(objectHP > 0){

				// ★衝突した位置情報を取得して、その位置にエフェクトを発生させる
				// (Vector3)は型変換の意味
				foreach(ContactPoint contactPoint in other.contacts){
					GameObject effect1 = Instantiate(effectPrefab1, (Vector3)contactPoint.point, Quaternion.identity) as GameObject;

					Destroy(effect1, 1.0f);
					Destroy(other.gameObject);
				}
			} else {

				foreach(ContactPoint contactPoint in other.contacts){
					GameObject effect2 = Instantiate(effectPrefab2, (Vector3)contactPoint.point, Quaternion.identity) as GameObject;

					Destroy(effect2, 1.5f);
					Destroy(other.gameObject);
					Destroy(gameObject);
				}
			}
		}
	}
}