반응형
참고
큐브를 점 A, Sphere를 점 B라고 하자.
이때 쿼터니언의 AngleAxis 메서드로 벡터 AB를 회전시켜보자.
빈 오브젝트를 만들고 AngleAxisText.cs를 추가한다.
기준이 되는 두 점과 변경할 각도를 선언한다.
public Transform dotA, dotB;
public float angle;
각도가 변경되면 즉시 반영되기 위해 OnValidate를 이용하였다.
아래 코드는 angle이 변할 때, 벡터 AB를 축을 기준으로 회전한다.
여기서 축은 XZ 평면이므로 XZ 평면의 노멀 벡터인 new Vector3(0, 1, 0)가 된다.
회전된 벡터 rot은 점 A의 원래 좌표 (startA)에 더해주면 된다.
void OnValidate()
{
if(angle > 0)
{
Vector3 AB = startB - startA;
Vector3 rot = Quaternion.AngleAxis(angle, new Vector3(0, 1, 0)) * AB;
dotB.position = startA + rot;
}
}
게임을 실행해서 angle을 변경하면 벡터가 정상적으로 회전하는 것을 알 수 있다.
전체 코드는 다음과 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AngleAxisTest : MonoBehaviour
{
public Transform dotA, dotB;
public float angle;
Vector3 startA, startB;
void OnValidate()
{
if(angle > 0)
{
Vector3 AB = startB - startA;
Vector3 rot = Quaternion.AngleAxis(angle, new Vector3(0, 1, 0)) * AB;
dotB.position = startA + rot;
}
}
void Start()
{
startA = dotA.position;
startB = dotB.position;
}
}
위의 실행결과는 아래의 unitypackage에서 확인 가능하다.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 - OpenGL로 화면 터치 이펙트 만들기 (Simple Screen Touch Effect with Unity GL) (0) | 2023.07.10 |
---|---|
유니티 - OpenGL로 화면에 선 그리기 (Draw a Line using Unity GL) (0) | 2023.07.10 |
유니티 - 안드로이드 OpenGL 설정 (Unity Android OpenGL Settings) (0) | 2023.07.10 |
유니티 AR - 미드 에어 앵커로 오브젝트 생성하기 (Vuforia Mid Air Anchors) (0) | 2023.07.05 |
유니티 AR - 그라운드 플레인으로 평면 인식하기 (Vuforia Ground Plane) (0) | 2023.07.04 |
댓글