반응형
참고
→ 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기)
아래와 같이 물체(Stage)를 기준으로 카메라를 회전시켜보자.
먼저 GetAxis를 이용해 움직일 범위를 정한다.
카메라는 마우스가 X 방향으로 움직일 때, 유니티 좌표계도 X 방향으로 움직이므로, x = Mouse X다.
xRotateMove = Input.GetAxis("Mouse X") * Time.deltaTime * rotateSpeed;
위와 같은 구현은 RotateAround(기준점, 축, 속도)로 아주 간단하게 구현할 수 있다.
Stage의 Y축을 기준 축으로 움직인다. (Vector3.up = 0, 1, 0)
그리고 카메라가 움직인 후, 기준이 되는 target을 LootAt으로 바라보게 하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateAround : MonoBehaviour
{
public GameObject stage;
private float xRotateMove, yRotateMove;
public float rotateSpeed = 500.0f;
void Update()
{
if (Input.GetMouseButton(0))
{
xRotateMove = Input.GetAxis("Mouse X") * Time.deltaTime * rotateSpeed;
Vector3 stagePosition = stage.transform.position;
transform.RotateAround(stagePosition, Vector3.up, xRotateMove);
transform.LookAt(stagePosition);
}
}
}
카메라에 스크립트를 추가하고 기준이 되는 게임 오브젝트를 넣으면 완성된다.
x, y 모두 움직이고 싶다면 아래와 같이 코드를 추가하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotateAround : MonoBehaviour
{
public GameObject stage;
private float xRotateMove, yRotateMove;
public float rotateSpeed = 500.0f;
void Update()
{
if (Input.GetMouseButton(0))
{
xRotateMove = Input.GetAxis("Mouse X") * Time.deltaTime * rotateSpeed;
yRotateMove = Input.GetAxis("Mouse Y") * Time.deltaTime * rotateSpeed;
Vector3 stagePosition = stage.transform.position;
transform.RotateAround(stagePosition, Vector3.right, -yRotateMove);
transform.RotateAround(stagePosition, Vector3.up, xRotateMove);
transform.LookAt(stagePosition);
}
}
}
카메라를 줌 인/아웃은 링크에서 확인해보자.
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
반응형
'개발 > Unity' 카테고리의 다른 글
유니티 스크립트 추상 클래스와 상속 (0) | 2022.03.10 |
---|---|
유니티 더블 클릭 구현하기 (Unity Double Click) (1) | 2022.03.09 |
유니티 - 1인칭 시점 조작 first person view controller (0) | 2022.03.06 |
유니티 - 마우스로 카메라 회전하기 (오일러 각) (4) | 2022.03.05 |
유니티 - 선택한 블럭 이동하기 (0) | 2022.02.28 |
댓글