파티클의 Particle System 컴포넌트 > Collision 항목의 체크박스에 체크
- Radius Scale : 파티클의 충돌 범위를 조정 (Scale particle bounds by this amount to get more precise collisions.)
- Collides With : 어느 레이어의 콜라이더와 충돌할 지 설정. (Monster로만 설정)
- Enable Dynamic : 이 항목을 체크해주어야 리지드 바디를 가진 오브젝트와 충돌할 수 있다.
- Send Collider Messages : 특정 이벤트가 발생했을 때, 지정된 메시지를 게임 오브젝트에 보내는 기능. (중요)
이 기능의 목적은 파티클이 특정 이벤트를 발생시켰을 때, 해당 이벤트를 게임 오브젝트의 스크립트에서 처리할 수 있도록 하는 것이다. 예를 들어, 파티클이 충돌했을 때 특정 함수나 메서드를 호출하거나, 충돌에 대한 정보를 전달할 수 있다.
void OnParticleCollision(GameObject other)
{
// 파티클이 충돌했을 때 호출됩니다.
Debug.Log("Particle collided with: " + other.name);
}
참고사항
- 메시지를 보내는 객체는 MonoBehaviour를 상속받아야 하며, 메시지를 처리할 함수는 public으로 정의되어야 한다.
<몬스터와 충돌 확인>
using UnityEngine;
public class ParticleCollider : MonoBehaviour
{
private ParticleSystem particleSystem;
private void Start()
{
particleSystem = GetComponent<ParticleSystem>();
}
private void OnParticleCollision(GameObject other)
{
Debug.Log($"OnParticleCollision ${other.name}");
Monster1 monster = other.GetComponent<Monster1>();
if (monster != null)
{
Debug.Log($"HitMonster {monster.name}");
//이 부분에 몬스터에 적용할 효과들을 작성.
}
}
}
참고 : https://docs.unity3d.com/kr/2021.3/Manual/PartSysCollisionModule.html
'UNITY > PROJECT' 카테고리의 다른 글
프로퍼티와 public 필드의 차이점 (0) | 2024.10.29 |
---|---|
magnitude와 sqrMagnitude (0) | 2024.10.29 |
Time.deltaTime (2) | 2024.10.22 |
캐릭터 이동 방식의 장단점 (0) | 2024.10.18 |
Input.GetAxis와 Input.GetAxisRaw (1) | 2024.10.07 |