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

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)는 주어진 두 값(y와 x)을 사용하여, 해당 값이 나타내는 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 은 로컬좌표
(부모 오브젝트를 기준으로 한 위치를 나타냄)
(부모 오브젝트의 위치에 따라 상대적은 좌표를 가짐.)
'게임 개발(유니티) > 멋쟁이 사자처럼 3기_회고록' 카테고리의 다른 글
| [멋쟁이사자처럼 유니티 TIL] 2024_12_19(목) 강의 요약 및 정리(0) (0) | 2024.12.19 |
|---|---|
| [멋쟁이사자처럼 유니티 TIL] 2024_12_18(수) 강의 요약 및 정리 (0) | 2024.12.18 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_17(화) 강의 요약 및 정리(0) (0) | 2024.12.16 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_12(목) 강의 요약 및 정리(2) (0) | 2024.12.12 |
| [멋쟁이사자처럼 유니티 TIL] 2024_12_12(목) 강의 요약 및 정리(1) (0) | 2024.12.12 |