TigerProject/Assets/Test/Block/DestructibleBlock.cs

52 lines
1.4 KiB
C#
Raw Normal View History

using UnityEngine;
public class DestructibleBlock : MonoBehaviour
{
[Header("<22><><EFBFBD><EFBFBD> ȿ<><C8BF> <20><><EFBFBD><EFBFBD>")]
[SerializeField]
private GameObject[] debrisPrefabs;
[SerializeField]
private int debrisCount = 5;
[SerializeField]
private float explosionForce = 5f;
private void OnDestroy()
{
if (!gameObject.scene.isLoaded)
{
return;
}
SpawnDebris();
}
private void SpawnDebris()
{
if (debrisPrefabs == null || debrisPrefabs.Length == 0)
{
return;
}
for (int i = 0; i < debrisCount; i++)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
GameObject prefab = debrisPrefabs[Random.Range(0, debrisPrefabs.Length)];
// <20><><EFBFBD><EFBFBD> <20><>ġ <20><>ó<EFBFBD><C3B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Vector2 randomPos = (Vector2)transform.position + Random.insideUnitCircle * 0.5f;
GameObject debris = Instantiate(prefab, randomPos, Quaternion.identity);
// <20><>! <20>ϰ<EFBFBD> ƨ<>ܳ<EFBFBD><DCB3><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
Rigidbody2D rb = debris.GetComponent<Rigidbody2D>();
if (rb != null)
{
Vector2 dir = (randomPos - (Vector2)transform.position).normalized;
dir += Random.insideUnitCircle * 0.5f; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD>
rb.AddForce(dir.normalized * explosionForce, ForceMode2D.Impulse);
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2<><32> <20>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Destroy(debris, 2f);
}
}
}