TIL

유니티 충돌

박민혁_kog 2023. 9. 6. 20:38

이 두 컴포넌트는 Unity에서 물리 시뮬레이션과 충돌 감지를 처리하는데 필수적입니다.

  1. Collider:
    1. Collider 컴포넌트는 게임 오브젝트에 물리적 형태를 부여합니다. 이는 충돌 감지를 가능하게 하며, 여러가지 종류의 Collider가 있습니다.
    2. 예를 들어 BoxCollider는 사각형, SphereCollider는 원형, MeshCollider는 복잡한 메시 형태의 Collider를 제공합니다. Collider는 자체적으로 물리적인 움직임을 제어할 수는 없지만 충돌을 감지할 수 있습니다.
  2. Rigidbody:
    1. Rigidbody 컴포넌트는 게임 오브젝트에 물리 법칙을 적용합니다. Rigidbody가 있는 오브젝트는 중력에 영향을 받고, 힘과 토크를 통해 움직일 수 있습니다.
    2. 또한 Rigidbody가 부착된 오브젝트는 다른 Rigidbody나 Collider와 충돌할 수 있습니다.

충돌 발생 시

  • Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트를 발생시킵니다.
  • 이 이벤트는 스크립트에서 처리하여 원하는 기능을 실행할 수 있습니다.
  • 예를 들어, 오브젝트가 땅에 닿으면 점프 가능 상태로 변경하거나, 오브젝트가 플레이어와 충돌하면 데미지를 입히는 등의 기능을 구현할 수 있습니다.

충돌만으로 더 많이 적을줄 알았는데 나중에 추가해서 더적음

 

 

시리얼 라이저 

프라이빗도 유니티에서 보이게할수 있음

 

aim 맞추기 (마우스 따라가기)

public class NewBehaviourScript : MonoBehaviour
{
    [SerializeField] private SpriteRenderer armRenderer;
    [SerializeField] private Transform armPivot;
    [SerializeField] private SpriteRenderer characterrenderer;

    private Topdown _controller;
    private void Awake()
    {
        _controller = GetComponent<Topdown>();
    }
    // Start is called before the first frame update
    void Start()
    {
        //마우스 움직일때 에 언에임을 구독
        _controller.OnLookEvent += OnAim;
    }

    public void OnAim(Vector2 newAimDirection) 
    {
        RotateArm(newAimDirection);
    }
    private void RotateArm(Vector2 Direction) 
    {
        float rotZ=MathF.Atan2(Direction.y, Direction.x) * Mathf.Rad2Deg; //벡터 각도

        armRenderer.flipY =MathF.Abs(rotZ)>90f;
        characterrenderer.flipX=armRenderer.flipY;
        armPivot.rotation = Quaternion.Euler(0,0,rotZ);

    }
}