반응형
이전 포스팅은 플레이어의 움직임까지만 구현하였다
이전 포스팅: https://red-tiger.tistory.com/56
추가로 카메라 스크립트를 활용하여 마우스 이동에 따라 카메라가 회전하고 플레이어를 추적하는 MyCamera.cs를 만들어 보겠다. 만약 이 스크립트를 쓸 예정이라면 주석을 보며 천천히 읽어보자.
MyCamera.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MyCamera : MonoBehaviour
{
public float Yaxis;
public float Xaxis;
public Transform target;//Player
private float rotSensitive=3f;//카메라 회전 감도
private float dis=2f;//카메라와 플레이어사이의 거리
private float RotationMin=-10f;//카메라 회전각도 최소
private float RotationMax=80f;//카메라 회전각도 최대
private float smoothTime=0.12f;//카메라가 회전하는데 걸리는 시간
//위 5개의 value는 개발자의 취향껏 알아서 설정해주자
private Vector3 targetRotation;
private Vector3 currentVel;
void LateUpdate()//Player가 움직이고 그 후 카메라가 따라가야 하므로 LateUpdate
{
Yaxis=Yaxis+Input.GetAxis("Mouse X")*rotSensitive;//마우스 좌우움직임을 입력받아서 카메라의 Y축을 회전시킨다
Xaxis=Xaxis-Input.GetAxis("Mouse Y")*rotSensitive;//마우스 상하움직임을 입력받아서 카메라의 X축을 회전시킨다
//Xaxis는 마우스를 아래로 했을때(음수값이 입력 받아질때) 값이 더해져야 카메라가 아래로 회전한다
Xaxis=Mathf.Clamp(Xaxis,RotationMin,RotationMax);
//X축회전이 한계치를 넘지않게 제한해준다.
targetRotation=Vector3.SmoothDamp(targetRotation,new Vector3(Xaxis,Yaxis),ref currentVel,smoothTime);
this.transform.eulerAngles=targetRotation;
//SmoothDamp를 통해 부드러운 카메라 회전
transform.position=target.position-transform.forward*dis;
//카메라의 위치는 플레이어보다 설정한 값만큼 떨어져있게 계속 변경된다.
}
}
위 스크립트를 카메라 붙여준다.
그리고 인스펙터창에서 Transform Player에 Player를 드래그 앤 드롭해준다.
마우스를 오른쪽으로 이동하고 직진버튼을 누르면 플레이어 또한 오른쪽으로 이동해줘야 한다.
그러므로 MyPlayer.cs 스크립트를 살짝 수정해주겠다.
결과영상
현재까지는 모두 마우스와 키보드로만 플레이어와 카메라를 조작했다. 다음포스팅에선 화면 왼쪽아래와 오른쪽 아래에 있는 조이스틱으로 조작하는 법을 포스팅 할 예정이다.
반응형
'유니티 > 모바일 멀티플레이 Shooting Game' 카테고리의 다른 글
유니티3D 모바일- 총구섬광 효과 (0) | 2023.01.07 |
---|---|
유니티 3D 모바일 TPS 조준점(크로스헤어) 만들기 (0) | 2022.11.23 |
유니티 3D모바일 조이스틱 조작 및 터치패널로 카메라 조작 (0) | 2022.11.10 |
유니티 3D플레이어 움직임(부드럽게) (0) | 2022.11.06 |
Unity -Photon으로 멀티플레이 구현하기(1) (0) | 2022.11.02 |