[SCC] TIL (6)

suhan0304·2024년 8월 22일

SCC - TIL

목록 보기
7/17
post-thumbnail

Date : 2024.08.22


KnifeHit

어제와 이어서 모작해보자.

오늘 이어서 구현할 기능은 아래와 같다.

  • Target Object 파괴 및 재생성
  • 보유 Knife 개수 UI 구현
  • Knife Sprite + Collider 수정

자세한 개발 내용은 하단의 개발 로그를 참고하자.

(2) : https://velog.io/@suhan0304/Unity-Knife-Hit-2


NIL (New I Learned)

angularVelocity

velocity가 단순히 오브젝트의 속도를 조절한다고 한다면 angularVelocity는 오브젝트의 회전 속도를 조절해주는 메서드이다.

float randomTorque = Random.Range(-200f, 200f);
rb.angularVelocity = randomTorque;

OnTriggerEnter Contact Point

OnCollisionEnter과 다르게 Trigger는 충돌 지점을 정확히 Vector 값으로 얻어 올 수 없다. (OnCollision이 충돌 지점을 얻어오는 방법은 아래와 같다.)

private void OnCollisionEnter2D(Collision2D collision)
{
    // 충돌한 모든 접촉점(contact point)을 가져옴
    foreach (ContactPoint2D contact in collision.contacts)
    {
        Vector2 collisionPoint = contact.point;
        Debug.Log("Collision Point: " + collisionPoint);
    }
}

그래서 OnTriggerEnter의 경우 두 Collider의 중심을 찾아서 평균 값을 찾거나 Closest Point 메서드 사용을 통해 충돌 지점을 어느 정도 계산 해주어야한다. (정확하지는 않다.)

Vector2 collisionPoint = collision.bounds.ClosestPoint(transform.position);

collision.bounds.ClosestPoint는 현재 Collider2D의 경계(bound)에서 주어진 위치(transform.position)에 가장 가까운 지점을 반환한다.

profile
Be Honest, Be Harder, Be Stronger

0개의 댓글