보통 PC 로 게임을 하는 경우 마우스 움직임에 따라 시선이 움직이게 됩니다.
이를 구현하기 위해서는 Player 에 Camera 를 하위로 놓고 Camera 에 스크립트 처리를 하면
손쉽게 구현이 가능합니다.
마우스 따라 카메라 움직이도록 하는 방법을 알아 보겠습니다.
이 스크립트를 이용하면 게임 시작시 마우스 움직임에 따라 카메라가 움직여
시선이 마우스에 따라 움직이도록 할 수 있습니다.
using UnityEngine;
public class CamRotation : MonoBehaviour
{
// 회전속도
public float rotSpeed = 400f;
// 회전값 변수
private float mx = 0;
private float my = 0;
// Update is called once per frame
void Update()
{
float x = Input.GetAxis("Mouse X");
float y = Input.GetAxis("Mouse Y");
mx += x * rotSpeed * Time.deltaTime;
my += y * rotSpeed * Time.deltaTime;
transform.eulerAngles = new Vector3(-my, mx, 0);
}
}
위 스크립트를 Camera 에 추가하여 게임을 실행하면 카메라 이동에 따라 시선이 움직입니다.
rotSpeed 는 카메라 이동속도로 이를 큰 값으로 잡은 경우 더 빠르게 움직이게 할 수 있습니다.
아래 그림을 보면 알수 있듯이 마우스 이동에 따라 카메라가 움직여 시선이 이동되는 것 처럼 처리가 가능합니다.
좌우는 상관없지만 위아래로 움직이는 경우 계속 위로가게되면 한바퀴 돌게됩니다.
이를 막기 위해서 아래 코드를 넣어 위아래로 한바퀴 도는 것을 방지할수 있습니다.
// my 값을 -90 에서 90 까지로 제한하기
my = Mathf.Clamp(my, -90, 90);
위 코드를 이용하면 위아래로 90도 이상 넘어가지 못하도록 값을 제한하게됩니다.
전체코드는 아래와 같습니다.
using UnityEngine;
public class CamRotation : MonoBehaviour
{
// 회전속도
public float rotSpeed = 400f;
// 회전값 변수
private float mx = 0;
private float my = 0;
// Update is called once per frame
void Update()
{
float x = Input.GetAxis("Mouse X");
float y = Input.GetAxis("Mouse Y");
mx += x * rotSpeed * Time.deltaTime;
my += y * rotSpeed * Time.deltaTime;
// my 값을 -90 에서 90 까지로 제한하기
my = Mathf.Clamp(my, -90, 90);
transform.eulerAngles = new Vector3(-my, mx, 0);
}
}
Unity TextMeshPro(TMP) 를 Script에서 사용하는 방법 (0) | 2024.01.22 |
---|---|
[Unity] Unity 프로젝트 Layer 정보까지 Export 하기 (0) | 2024.01.14 |
[Unity] 물체 잡기 (Grab Object) (0) | 2024.01.13 |
[Unity] [Collab] Collab service is deprecated and has been replaced with PlasticSCM 에러 처리방법 (0) | 2024.01.09 |
[Unity] 카메라 흔들기 (Camera Shake) 하기 (0) | 2023.12.14 |