[position]
게임 오브젝트 위치 정보.
//(x, y, z)위치로 순간이동
transform.position = new Vector3(x, y, z)
//현재 위치에 (0,0,1)값을 더하며 이동
transform.position += Vector3.forward
[Translate]
현 오브젝트의 Transform 위치를 이동시키는 메서드.
현 위치에서 지정한 방향과 거리만큼 이동한다.
transform.Translate(이동값);
transform.Translate(이동값, 기준공간);
using UnityEngine;
public class CTranslate : MonoBehaviour
{
private float moveSpeed = 5.0f; //moveSpeed = 5.0의 속도로 이동
void Update()
{
//[자동 이동]
//[1]
transform.Translate(Vector3.forward);
//[2]
transform.Translate(Vector3.forward * moveSpeed);
//[3]
transform.Translate(Vector3.forward * Time.deltaTime); //Time.deltaTime: 프레임 보정
//[입력 이동]
//[1] 이동키 할당
float horizontal = Input.GetAxisRaw("Horizontal"); //string("축의 이름")
float vertical = Input.GetAxisRaw("Vertical");
//[2] 이동 인스턴스 생성
Vector3 move = new Vector3(horizontal, 0, vertical); //WS x축 |AD z축 이동 |y축 사용X
//[3]대각선 균일화
move = move.normalized; //normalized: 대각선도 동일 속도만큼 이동하도록 만듬
//[4]
transform.Translate(move * moveSpeed * Time.deltaTime); //입력 방향으로 moveSpeed만큼 이동
//기준공간: Space.() (콤마 뒤에 오버로딩 - Space.World, Space.Self)
transform.Translate(move * moveSpeed * Time.deltaTime, Space.Self);
[함께 보면 좋은 내용]
[Debug.Log()]
실행 시 Console란에 Log를 출력해준다(코드 배포 전 제거)
[Vector3]
3차원 공간(x, y, z)의 위치, 방향, 이동 거리를 나타낼때 사용하는 구조체
right - left (x축) | up - down(y축) | forward - back(z축)
[Time.deltaTime]
FPS가 달라도 같은 값을 이동하도록 프레임을 보정한다. (1 * (1 / 프레임) = 프레임당 시간 보정)
[GetAxis(" "), GetAxisRaw(" ")]
유니티의 InputSystem이나 Project Setting의 Active Input Handling 시스템 등을 이용.
사용자가 할당 키 입력 시 작동한다.
GetAxis : -1.0f부터 1.0f까지의 범위 값을 반환(부드러운 이동)
GetAxisRaw : -1, 0, 1 중 하나가 반환(빠른 반응)
horizontal: (A, D) | vertical (W, S)
[키 할당]
Vector3 move = new Vector3(x, y, z)
[GetKey(KeyCode.키)]
if문과 함께 사용. 해당 키 입력 시 if문 안의 내용을 실행.
[ .normalized]
피타고라스의 원리로 인해, 대각선 이동 시 루트2(약 1.4)의 거리를 이동하게 된다(더 빠른 이동속도)
Vector3의 방향을 정규화 하여, 균일한 속도로 이동하게 한다.
[Space.World]
기준 공간 - 월드 좌표 기준 이동
[Space.Self]
기준 공간 - 오브젝트 회전 방향 기준 이동
[rotate]
회전. 물체가 바라보는 방향을 바꾼다(오일러 타입)
현재 회전 값에 새로운 회전 값을 누적해서 더한다.
transform.Rotate(회전값);
transform.Rotate(회전값, 기준공간);
[eulerAngles]
오브젝트 회전을 사람이 보기 쉬운 각도 값으로 표현한다(4차원 쿼터니언 -> 3차원 오일러)
쿼터니언(XYZW)은 회전 보간 안정, 회전 보정, 짐벌락 현상 방지 등 3D에서 가장 표현하기 쉬우나, 사람이 보기 힘들다.
때문에 오일러 각으로 표기한다. (직접 수정하면 안된다. 메서드 값을 수정해야 한다.)
짐벌락 현상: 3차원 공간에서 물체 회전 시, 두 회전 축이 겹쳐 회전 자유도 상실. 특정 각도의 두 축이 겹쳐 보인다.
//Rotate가 회전값 더하기라면, eulerAngles는 회전 값을 직접 설정한다.
transform.eulerAngles = new Vector3(x, y, z);
using UnityEngine;
public class RotateBasic : MonoBehaviour
{
private float rotateSpeed = 50.0f; //회전스피드
private void Start()
{
transform.eulerAngles = new Vector3(0.0f, 90.0f, 0.0f); //y축을 90도로 초기화
}
void Update()
{
if (Input.GetKey(KeyCode.Space)) //KeyCode.키 : 해당 키를 누르는 동안 진행
{
transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime, Space.World); //up: y축을 50.0f만큼 회전(월드 기준)
}
}
}
[Rotation]
오브젝트 회전값. 유니티가 회전을 저장하는 전용 타입(쿼터니언 타입)
[Quaternion.Euler]
현재 오일러(3차원)회전 값을 쿼터니언 식으로 변환
transform.rotation = Quaternion.Euler(x,y,z);
[LookAt]
현 오브젝트의 앞방향이 타겟을 향하게 한다.
transform.LookAt(transform target);
using UnityEngine;
public class CLookAt : MonoBehaviour
{
public Transform target; //인스펙터 표시
void Update()
{
transform.LookAt(target); //앞부분이 타겟을 향한다
}
}

[RotateAround]
현 오브젝트가 타겟 위치를 중심으로 회전(공전)한다.
ex) 카메라가 플레이어 중심 공전, 아이템이 특정 오브젝트 중심 공전 등의 상황에 사용
transform.RotateAround(Vector3 point, Vector3 axis, float angle); //(회전 중심점, 회전 축, n도 회전)
transform.RotateAround(target.position, Vector3.up, 30.0f); //(target을 중심으로, y축을, 30도 회전)
using UnityEngine;
public class CRotateAround : MonoBehaviour
{
public Transform target; //인스펙터 표시
private float rotateSpeed = 50.0f; //회전값
void Update()
{
//(타겟 위치, y축으로 50도 회전 (프레임 보정)
transform.RotateAround(target.position, Vector3.up, rotateSpeed * Time.deltaTime);
}
}
[LookRotation]
현 오브젝트 위치에서 타겟 위치를 바라보는 방향 벡터(쿼터니언 회전값)를 만들어준다.
현 위치에서 목표까지 가는 방향을 나타낼 때 사용한다
(타겟의 크기까지 포함하기 때문에)방향만 필요하면 노멀라이즈를 함께 사용한다.
Quaternion.LookRotation(Vector3 forward, Vector3 upwards) //(앞방향을 삼을 벡터, 위쪽 기준)
//내 현재 위치에서 타겟의 위치로 향하는 방향을 계산하고, 내 앞방향(forward)이 그 방향을 향하도록 회전한다.
using UnityEngine;
public class CLookRotation : MonoBehaviour
{
public Transform target; //인스펙터 표시
void Update()
{
//내 위치에서 타겟 위치로 향하는 방향 벡터(dir)를 구하는 공식
//target.position : 목표 위치
//transform.position : 내 위치
Vector3 dir = target.position - transform.position;
//ex) 플레이어 위치 (0,0,0) / 타겟 위치 (10,0,0)
//타겟 포지션(타겟 위치) - 트랜스폼 포지션(내 위치) : dir = (10,0,0)
if (dir == Vector3.zero) return; //만약 dir 값이 (0,0,0)이면 하지마라
Quaternion lookRotation = Quaternion.LookRotation(dir, Vector3.up);
transform.rotation = lookRotation;
}
}
[LookAt vs LookRotation]
둘 다 대상을 바라보게 하는 건 동일하나,
LookAt은 바로 바라보게 한다(즉시 회전)
ex) 터렛과 같은 부자연스러운 회전
LookRotation은 바라보는 회전값만 만든다.(부드러운 회전)
ex) 미사일 유도, 보스AI와 같은 회전 직접 컨트롤
'개발일지 > Unity' 카테고리의 다른 글
| [Unity] Find, Coroutine (0) | 2026.05.28 |
|---|---|
| [Unity]Ray복습, UI, OverLap, Check (0) | 2026.05.27 |
| [Unity] Prefabs, RayCast (0) | 2026.05.26 |
| [Unity]Rigidbody, Collider (0) | 2026.05.26 |
| [Unity]컴포넌트, 라이프 사이클 (0) | 2026.05.20 |