헷갈리는 오브젝트 회전 방법 Part 1 (LookRotation, LookAt, RotateTowards)

2023. 11. 20. 11:40·Unity
반응형

Unity에서 오브젝트를 회전하는 방법에는 여러 가지가 있습니다. 그 중에서도 가장 일반적인 방법은 쿼터니언을 사용하는 것입니다. 쿼터니언은 3차원 회전을 표현하는 데 사용되는 4차원 벡터입니다.

 

Unity에서 쿼터니언을 사용하여 오브젝트를 회전하는 방법은 다음과 같습니다.

  1. 먼저, Quaternion.LookRotation() 또는 transform.LookAt() 메서드를 사용하여 회전할 값인 쿼터니언 값을 구합니다.
  2. 그런 다음, Transform.rotation 속성을 사용하여 오브젝트의 회전 쿼터니언을 설정합니다.

transform.LookAt() 메서드

transform.LookAt() 메서드는 오브젝트를 지정된 위치와 방향으로 회전합니다.

public void LookAt(Transform target);
public void LookAt(Vector3 worldPosition, [DefaultValue("Vector3.up")] Vector3 worldUp);
public void LookAt(Vector3 worldPosition);

여기서 target은 바라볼 오브젝트, worldPosition은 오브젝트가 바라보게 될 위치, worldUp 오브젝트가 회전할 기준점입니다.

 

다음은 transform.LookAt() 메서드를 사용하여 오브젝트를 지정된 위치와 방향으로 회전하는 예입니다.

public void Rotation()
{
    // 오브젝트를 지정된 위치와 방향으로 회전합니다.
	transform.LookAt(target.transform);
}

Quaternion.LookRotation() 메서드

Quaternion.LookRotation() 메서드는 지정된 방향을 가리키는 쿼터니언을 생성합니다.

public static Quaternion LookRotation(Vector3 forward);
public static Quaternion LookRotation(Vector3 forward, [DefaultValue("Vector3.up")] Vector3 upwards);

여기서 forward는 지정된 방향을 나타내는 Vector3입니다.

 

다음은 Quaternion.LookRotation() 메서드를 사용하여 오브젝트를 지정된 방향으로 회전하는 예입니다.

public void Rotation()
{
	Vector3	direction = (target.transform.position - transform.position).normalized;
	// 타켓을 향한 방향 벡터를 계산합니다. 
	Quaternion rotation = Quaternion.LookRotation(direction);
	// 지정된 방향을 가리키는 쿼터니언을 생성합니다.
	transform.rotation = rotation;
	// 오브젝트를 지정된 방향으로 회전합니다.
}

 

두 메서드의 차이점

transform.LookAt() 메서드와 Quaternion.LookRotation() 메서드의 차이점은 다음과 같습니다.

  • transform.LookAt() 메서드는 오브젝트를 직접 회전하는 반면, Quaternion.LookRotation() 메서드는 회전할 쿼터니언을 생성하는 것입니다.
  • transform.LookAt() 메서드는 오브젝트의 위치와 방향을 함께 지정해야 하지만, Quaternion.LookRotation() 메서드는 방향만 지정하면 됩니다. 두 메서드의 방향 기본값은 Vector Up입니다. 

RotateTowards() 메서드

RotateTowards() 메서드는 현재 쿼터니언과 목표 쿼터니언을 향해 회전하는 쿼터니언을 생성합니다.

public static Quaternion RotateTowards(Quaternion from, Quaternion to, float maxDegreesDelta)

여기서 from은 현재 쿼터니언, to는 목표 쿼터니언, maxDegreesDelta는 회전 속도를 나타내는 값입니다.

 

다음은 RotateTowards() 메서드를 사용하여 오브젝트를 목표 쿼터니언으로 회전하는 예입니다.

private void Update() 
{
    Vector3    direction   = (target.transform.position - transform.position).normalized;
    Quaternion rotation    = Quaternion.LookRotation(direction);
    Quaternion rotateValue = Quaternion.RotateTowards(transform.rotation, rotation, 60.0f * Time.deltaTime);
    
    trasform.rotation = rotateValue;
}

LookAt과 LookRotation 메서드와는 다르게 즉시 회전하는 것이 아닌 일정한 속도로 회전합니다.

Time.deltaTime 옆의 상수값 (60.0f)를 조절하여 회전속도를 조절할 수 있습니다.

 

아래 사진은 위 예제를 실행 시킨 모습입니다. 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

시야 범위에 타켓 오브젝트가 들어와 있는지 확인하는 방법  (0) 2023.11.21
C# 프로젝트 파일이 열리지 않을 때 (VSCode)  (0) 2023.11.21
Unity에서 Google AdMob을 사용하는 방법  (1) 2023.11.07
Unity의 WaitUntil 코루틴  (0) 2023.10.25
Unity에서 유연한 인스턴스 생성  (0) 2023.10.16
'Unity' 카테고리의 다른 글
  • 시야 범위에 타켓 오브젝트가 들어와 있는지 확인하는 방법
  • C# 프로젝트 파일이 열리지 않을 때 (VSCode)
  • Unity에서 Google AdMob을 사용하는 방법
  • Unity의 WaitUntil 코루틴
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    programming101
    스크립트 실행
    스크립트 실행 순서
    라떼우유
    unity
    Python
    긴유통기한우유
    리뷰이관
    ipcamera
    learntocode
    cv2
    programmerlife
    스마트스토어리뷰
    셀레니움
    카페24리뷰이관
    C#
    리뷰관리
    리스트
    카페24리뷰
    devlife
    rtsp
    codingtips
    믈레코비타멸균우유
    파이썬
    유니티
    쇼핑몰리뷰
    appdevelopment
    상품 리뷰 크롤링
    codingcommunity
    list
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
헷갈리는 오브젝트 회전 방법 Part 1 (LookRotation, LookAt, RotateTowards)
상단으로

티스토리툴바