地雷を改良する
爆風で周囲のオブジェクトを吹き飛ばす
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);
}
}
}
爆風で周囲のオブジェクトを吹き飛ばす
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);
}
}
}
地雷を改良する