地雷を改良する


爆風で周囲のオブジェクトを吹き飛ばす
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Mine : MonoBehaviour { public GameObject effectPrefab; public AudioClip sound; private float power = 10f; private float radius = 10f; private void OnCollisionEnter(Collision collision) { // ★追加(砲弾でも地雷を破壊できるようにする) if(collision.gameObject.tag == "Player" || collision.gameObject.tag == "Shell") { GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity); Destroy(effect, 0.5f); AudioSource.PlayClipAtPoint(sound, transform.position); // ★追加(地雷の周囲にも爆発の影響を与えるようにする) // 地雷の位置を『爆心地』とする。 Vector3 explosionPos = transform.position; // 爆心地から『指定した半径内』にあるオブジェクトのcolliderを取得する。 Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); foreach(Collider hit in colliders) { Rigidbody rb = hit.GetComponent<Rigidbody>(); if(rb != null) { rb.AddExplosionForce(power, transform.position, radius, 1.0f, ForceMode.VelocityChange); } } Destroy(gameObject); } } }
C#




爆風で周囲のオブジェクトを吹き飛ばす
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Mine : MonoBehaviour { public GameObject effectPrefab; public AudioClip sound; private float power = 10f; private float radius = 10f; private void OnCollisionEnter(Collision collision) { // ★追加(砲弾でも地雷を破壊できるようにする) if(collision.gameObject.tag == "Player" || collision.gameObject.tag == "Shell") { GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity); Destroy(effect, 0.5f); AudioSource.PlayClipAtPoint(sound, transform.position); // ★追加(地雷の周囲にも爆発の影響を与えるようにする) // 地雷の位置を『爆心地』とする。 Vector3 explosionPos = transform.position; // 爆心地から『指定した半径内』にあるオブジェクトのcolliderを取得する。 Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); foreach(Collider hit in colliders) { Rigidbody rb = hit.GetComponent<Rigidbody>(); if(rb != null) { rb.AddExplosionForce(power, transform.position, radius, 1.0f, ForceMode.VelocityChange); } } Destroy(gameObject); } } }
C#


地雷を改良する