본문 바로가기
게임 개발(유니티)/멋쟁이 사자처럼 3기_회고록

[멋쟁이사자처럼 유니티 TIL] 2024_12_17(화) 강의 요약 및 정리

by goraku97 2024. 12. 17.

어떤 물체를 자전시키는 스크립트

angle += rotationSpeed * Time.deltaTime;

// rotationSpeed에 Time.deltaTime(프레임 간 시간)을 곱해 회전 각도를 시간에 따라 일정하게 증가

   계산한 값을 angle 에 할당

 

transform.Rotate(Vector3.down * rotationSpeed * Time.deltaTime);

- transform.Rotate

  // 회전할 축을 설정시킴. 현재 코드에서는 Vector3.down 이 사용됬으므로, 

     Y축을 기준으로 반시계방향으로 회전시킴.

 

어떤 물체를 공전시키는 스크립트

 

public GameObject Planet

// 회전의 중심이 되는 오브젝트를 참조

private float radius

// 행성과 폭탄 공 사이의 거리(반지름)를 저장하는 변수

 

void Start()

 

radius = Vector3.Distance(transform.position, Planet.transform.position);

- Vector3.Distance

 // 3D 벡터(좌표) 사이의 거리를 계산하는 데 사용되는 메서드

    해당 오브젝트자전축으로 삼을 오브젝트 사이의 거리를 계산하고 radius 에 반환.

 

Vector3 direction = (transform.position - Planet.transform.position).normalized;

- Vector3 direction

// 두 점 간의 방향을 나타내는 값. , 두 점 사이의 차이를 나타내는 벡터

  해당 오브젝트 자전축으로 삼을 오브젝트 간의 백터의 차이를 계산하고, 정규화(normalized;)

   시켜서 방향만을 나타내는 새로운 백터를 생성.

 

  ** 정규화된 백터는 회전이나 방향을 제어하는데 아주 유용함.

      상기의 스크립트처럼, 해당 오브젝트가 공전대상을 중심으로 원형 궤도를 돌게 하려면

      이 방향 벡터를 사용해 초기 각도를 계산하거나 회전을 적용할 수 있음.

 

angle = Mathf.Atan2(direction.z, direction.x);

- Mathf.Atan2

 // Mathf.Atan2(y, x)는 주어진 두 값(yx)을 사용하여, 해당 값이 나타내는 2D 좌표 시스템에서의 각도를 계산

 

void Update()

 

float x = Planet.transform.position.x + radius * Mathf.Cos(angle);

 

float z = Planet.transform.position.z + radius * Mathf.Sin(angle);

 

transform.position = new Vector3(x, transform.position.y, z);

// 계산된 x, z 값을 이용해 오브젝트의 위치를 업데이트.

  transform.position.y는 기존 Y축 값을 유지하여, 수평 원형 궤도를 만듬.

 

  ***   transform.position 은 월드좌표

         transform.localPosition 은 로컬좌표

         (부모 오브젝트를 기준으로 한 위치를 나타냄)

         (부모 오브젝트의 위치에 따라 상대적은 좌표를 가짐.)