大型のボス敵やオブジェクトを攻撃する場合、「攻撃の当たった場所」にエフェクトを発生させる方法
*『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);
}
}
}
}
}

