C#
[유니티]방향키로 움직이고 마우스로 화면 회전하기
아스키의 공부방
2023. 8. 29. 20:41
728x90
반응형
빈 게임 오브젝트(Player)를 생성하고 컴포넌트 추가
메인카메라를 Player 자식으로 이동
스크립트 (카메라에 추가)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControl : MonoBehaviour
{
public float rotationSpeed = 200f;
public float minXRotation = -45f;
public float maxXRotation = 45f;
private float currentXRotation = 0f;
void Update()
{
// 회전 처리
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
float rotationX = -mouseY * rotationSpeed * Time.deltaTime;
float rotationY = mouseX * rotationSpeed * Time.deltaTime;
// x축 회전 제한
currentXRotation += rotationX;
currentXRotation = Mathf.Clamp(currentXRotation, minXRotation, maxXRotation);
// 회전 적용
transform.localRotation = Quaternion.Euler(currentXRotation, transform.localEulerAngles.y + rotationY, 0f);
}
}
스크립트 (Player에 추가)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerControl : MonoBehaviour
{
public float movementSpeed = 5f;
private Transform cameraTransform;
private void Start()
{
cameraTransform = Camera.main.transform; // 카메라의 Transform을 가져옴
}
private void Update()
{
// 이동 처리
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
Vector3 cameraForward = cameraTransform.forward;
Vector3 cameraRight = cameraTransform.right;
cameraForward.y = 0; // y 축 회전은 고려하지 않음
cameraRight.y = 0;
Vector3 movement = (cameraForward.normalized * verticalInput + cameraRight.normalized * horizontalInput) * movementSpeed * Time.deltaTime;
transform.Translate(movement);
}
}
728x90
반응형