| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 해쉬맵
- 알고리즘
- 반복문
- 자료구조
- 큐
- 기술면접
- static_cast
- map
- MonoBehaviour
- 스택영역
- 객체지향
- rookiss
- 벡터
- 트리
- 인프런
- 리스트
- thread
- Queue
- 힙영역
- std::map
- 멀티쓰레드
- 배열
- c#
- vector
- 프래그멘테이션
- 스택
- 공부
- 차이점
- list
- std::unordered_map
- Today
- Total
호빵의 IT 개발소
[MMO RPG] Camera 설정(Quater View) 본문
우선 카메라 모드를 여러개 할 것을 대비해 Define이라는 C# script를 생성합니다.
Define.cs
-우선은 쿼터뷰만 쓸 예정이기 때문에 public enum CameraMode에서 QuaterView만 추가해 줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Define
{
public enum CameraMode //카메라 모드
{
QuarterView,
}
}
그리고 CameraController 스크립트를 생성하여 줍니다.
CameraController.cs
-Main Camera에 스크립트를 적용시켜 줍니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
[SerializeField]
Define.CameraMode _mode = Define.CameraMode.QuarterView; //Define에서 쿼터뷰 정의를 가져옴
[SerializeField]
Vector3 _delta = new Vector3(0.0f, 7.0f, -6.0f); //_delta 방향 벡터
[SerializeField]
GameObject _player; //카메라가 따라갈 플레이어를 유니티에서 드로그드롭으로 설정
void Start()
{
}
void LateUpdate() //플레이어의 움직임 다음으로 update문이 실행되도록 LateUpdate를 사용(카메라 떨림 현상)
{
if (_mode == Define.CameraMode.QuarterView) //만약 카메라모드가 쿼터뷰모드일 때
{
transform.position = _player.transform.position + _delta; //플레이어의 좌표를 가져와서 우리가 설정한 _delta라는 방향 벡터를 더해준다
transform.LookAt(_player.transform); //카메라가 무조건 플레이어의 좌표를 주시한다.
}
}
public void SetQuaterView(Vector3 delta) //쿼터뷰를 코드상으로 셋팅할 경우
{
_mode = Define.CameraMode.QuarterView;
_delta = delta;
}
}
-LateUpdate문을 쓰는 이유는 Update문을 쓰게 되면 다른 Controller 스크립트에 있는 Update문하고 실행이 겹치게 되며 어느 Update문이 먼저 실행될지는 모르나 계속 Update문이 왔다갔다하며 카메라에 떨림이 발생하게 됩니다. 그래서 LateUpdate문을 통하여 Update문 실행 후 LateUpdate문이 실행되도록 변경하였습니다.
-_delta는 방향 벡터를 의미하고 유니티에서 직접 설정한 Position을 그대로 적어줍니다.

-_player는 유니티 상에서 카메라가 쫒아갈 대상을 의미하며 유니티에서 드래그드롭을 통해 player를 설정하 수 있습니다.

-SetQuaterView는 혹시나 쿼터뷰를 코드상으로 셋팅할 경우를 대비하여 임시로 만들어 놓았습니다. (없어도 카메라 모드가 정상적으로 작동합니다.)
---------------------------------------------------------------------------------------------------------------------------
참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
'C#, 유니티 > MMO RPG 만들기 기초(클라이언트)' 카테고리의 다른 글
| [MMO RPG] Animator (0) | 2022.01.27 |
|---|---|
| [MMO RPG] RayCast를 이용한 마우스 이동 및 벽에서 카메라 줌인 (0) | 2022.01.25 |
| [MMO RPG] Raycasting (0) | 2022.01.23 |
| [MMO RPG] Trigger (0) | 2022.01.21 |
| [MMO RPG] Collision (0) | 2022.01.21 |