본문 바로가기
개발/Unity

유니티 - 게임 오브젝트 기준으로 카메라 움직이기

by 피로물든딸기 2022. 3. 7.
반응형

Unity 전체 링크

 

참고

 시네머신 튜토리얼 링크 (시네머신을 이용하여 카메라 간편하게 조작하기)

 

아래와 같이 물체(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:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글