본문 바로가기
UNITY/PROJECT

파티클에 collider 설정하기

by 램플릿 2024. 8. 22.

파티클의 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