본문 바로가기

Unity/제로부터 구현

플레이어를 기준으로 n크기의 반지름을 가진 원의 접선 그리기.

728x90

오늘의 구현.

플레이어를 중심으로 n 크기의 반지름을 가진 원의 접선 그려보기.

 

1.Debug.DrawLine() 을 사용해 반지름과, 접선 그려보기.

접선은 해당 점에서 원의 경계에 수직이며, 원의 중심을 지나는 직선과 평행합니다.

원의 접선을 구하기 위해서는 접하는 점과 원의 중심을 알아야 합니다. 해당 점과 원의 중심을 연결하여 구한 벡터는 원의 접선이 됩니다.

 

순서

  1. 원의 중심과 랜덤한 레디언값을 사용해 벡터를 구할 것 입니다.
  2. 레디언 값에 90도를 더한 각도를 사용하여, 원의 접선 벡터를 구합니다.
  3. 위에서 구한 벡터 값에서부터 원에 접선 벡터까지 기즈모를 그려줍니다.

 

1.

  • 반지름을 2f로 설정하고, 랜덤한 레디언 값을 구해줍니다.
  • 원의 중심은 플레이어의 위치 입니다.
  • 레디언 값을 사용해 x,y 좌표를 구해줍니다.
        float radius = 2f;
        float randomRadian = Random.Range(0f, 2f * Mathf.PI);
        Vector2 center = transform.position; // 플레이어의 위치
        float x = center.x + radius * Mathf.Cos(randomRadian);
        float y = center.y + radius * Mathf.Sin(randomRadian);
        Vector2 pointOnCircle = new Vector2(x, y);

2.

  • 접선을 그리기위해 랜덤한 레디언 값에 90도를 더해 줍니다.
        float tangentRadian = randomRadian + Mathf.PI / 2f; 
        float tangentX = center.x + radius * Mathf.Cos(tangentRadian);
        float tangentY = center.y + radius * Mathf.Sin(tangentRadian);
        Vector2 tangentVector = new Vector2(tangentX - center.x, tangentY - center.y);

3.

선 그리기

  Debug.DrawLine(center, pointOnCircle, Color.red); // 원의 반지름을 나타내는 선
  Debug.DrawLine(pointOnCircle, pointOnCircle + tangentVector, Color.green);

 

728x90