파티클에 해당 판정을 구현한다.

6263 단어 Unity3DC#Unity

개요



파티클에 해당 판정을 구현하는 방법을 소개합니다. 이 기사에서는 파티클이 객체에 충돌하면 충돌 횟수가 가산되어 가도록 구현합니다.

결과



결국 이 동영상이 됩니다.

입자와 큐브 사이의 충돌 횟수를 표시합니다. 피 c. 라고 r. 코 m/1 에우 Wrf9YX


방법



September 25, 2019



이 기사에서 사용하는 객체는 녹색 큐브, 빨간색 입자 및 충돌 횟수를 표시하는 텍스트입니다. 각 객체의 Transform 값은



  • Cube: Scale(3, 3, 3)
  • Particle System: Position(10, 0, 0), Rotation(0, -90, 0)
  • Main Camera: Position(4, 0, -10)


와 같이 변경했습니다. 또한 Cube에는 Box Collider를 붙입니다. Box Collider가 없으면 충돌 판정을 할 수 없습니다. Box Collider의 Is Trigger를 체크하지 마십시오. 카메라에서 보고 Cube의 오른쪽에서 Particle을 방출하도록 합니다.





파티클 설정은 위 그림과 같습니다. Particle의 색상은 그림에 반영되지 않지만 Start Color에서 변경합니다. Particle의 당 판정을 구현하는데 중요한 것이




  1. 콜리전을 확인하십시오
  2. Collision의 Type을 World로 한다
  3. Collision의 Send Collision Messages에 체크 표시
  4. 스크립트에서 OnParticleCollision 메서드 호출


입니다. 1~3까지는 위 그림과 같습니다. 4는 아래 스크립트에서 설명합니다.




ParticleController.cs

using UnityEngine;

public class ParticleController : MonoBehaviour
{
    private int count;

    private void Start()
    {
        count = 0;
    }

    private void Update()
    {
    }

    void OnParticleCollision(GameObject obj) 
    {
        Count++;
    }

    public int Count 
    {
        get { return count; }
        private set { count = value; }
    }
}



ParticleController.cs는 Particle System에 연결하는 스크립트입니다. 여기에는 OnParicleCollsion이라는 메서드가 포함되어 있습니다. 이것은 방금전의 1~3의 설정이 되어 있을 때 파티클이 Collider가 붙어 있는 오브젝트에 충돌했을 때에 자동으로 불려 가는 메소드입니다. 충돌할 때마다 충돌 횟수를 나타내는 변수 count를 1씩 늘리고 있습니다. 메소드의 이름은 OnParticleCollsion이어야 하며, 인수 유형도 GameObject여야 합니다.




TextController

using UnityEngine;
using UnityEngine.UI;

public class TextController : MonoBehaviour
{
    private ParticleController particleController;
    private Text text;

    private void Start()
    {
        particleController = GameObject.Find("Particle System").GetComponent<ParticleController>();
        text = GetComponent<Text>();
    }

    private void Update()
    {
        text.text = particleController.Count.ToString();
    }
}



이어서 Text에 연결하는 TextController.cs입니다. Text가 충돌 횟수를 표시하도록 해야 하므로 ParticleController.cs에 정의된 변수 count를 참조해야 합니다. 그래서 Particle System에 ParticleController가 붙어있는 것을 이용하여



particleController = GameObject.Find("Particle System").GetComponent<ParticleController>;


에서 ParticleController.cs에 액세스할 수 있도록 합니다. 그리고는 Update 메소드로 Text의 문자를 count로 하면 충돌 횟수가 늘어나는 모습이 화면상에서 볼 수 있습니다.



이상입니다.


좋은 웹페이지 즐겨찾기