TigerProject/Assets/Test/Block/DestructibleBlock.cs

52 lines
1.4 KiB
C#

using UnityEngine;
public class DestructibleBlock : MonoBehaviour
{
[Header("파편 효과 설정")]
[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++)
{
// 랜덤한 파편 선택
GameObject prefab = debrisPrefabs[Random.Range(0, debrisPrefabs.Length)];
// 블록 위치 근처에서 생성
Vector2 randomPos = (Vector2)transform.position + Random.insideUnitCircle * 0.5f;
GameObject debris = Instantiate(prefab, randomPos, Quaternion.identity);
// 펑! 하고 튕겨나가는 힘 적용
Rigidbody2D rb = debris.GetComponent<Rigidbody2D>();
if (rb != null)
{
Vector2 dir = (randomPos - (Vector2)transform.position).normalized;
dir += Random.insideUnitCircle * 0.5f; // 방향 랜덤성 추가
rb.AddForce(dir.normalized * explosionForce, ForceMode2D.Impulse);
}
// 파편은 2초 뒤에 스스로 사라짐
Destroy(debris, 2f);
}
}
}