게임 개발 공부 17

New InputSystem 에서 마우스 스크롤(휠) 값으로 카메라 줌 만들기

기존 InputManager에서 InputSystem으로 갈아타면서 수정해주고 알아가야할게 많다. 마우스 스크롤 값 또한 구글링을 해도 잘 나와있지 않았다. > 먼저 InputActions에서 마우스 휠값을 받을 Actions을 생성해야 한다. > Action Type은 Pass Through로, Control Type은 Axis로 설정 한다. > 그리고 Actions 오른쪽의 +를 눌러 Add Binding을 눌러 바인드를 생성한다. > Path에서 Mouse를 누르고 아래쪽에 Scroll의 Y값을 받도록 설정한다. Action은 설정이 되었고, 스크립트를 보기전에 먼저 InputActions의 클래스를 생성해야 한다. 아래와 같이 Generate C# Class를 체크하고 Apply를 눌러 클래스를 ..

Cinemachine Free Look Camera 민감도 조절

Cinemachine Free Look Camera을 통해 캐릭터 화면 회전을 하게 되면 버벅이거나 끊겨서 움직여지는 것처럼 느껴질 것이다. 그 이유는 기본적으로 InputManager의 Mouse X, Mouse Y의 입력을 받기 때문인데, 민감도 설정이 1로 되어 있기 때문에 세밀한 움직임을 갖지 못하는 것이다. 조금 부드럽게 움직이고 싶으면 아래와 같이 하며 된다. 1. 상단의 Edit - Project Settings - InputManager를 연다. 2. InputManager에서 Mouse X와 Mouse Y의 Sensitivety(민감도) 값을 1보다 낮춰준다. (기본값 1은 윈도우 마우스 민감도와 같다.)

Input Error

구 input에서 new Inputsystem을 바꾸려니까 고쳐야할게 한두가지가 아니며 아래와 같은 에러도 발생한다..ㅠㅠ You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. 번역상 새로운 인풋시스템을 사용하는데 왜 예전꺼를 다시 쓰려고 하냐는 말..ㅎㅎ 해결 방법은 먼저 edit - project settings을 눌러 프로젝트 세팅창을 연다. 그리고에 player탭에서 아래쪽에 Configuration - Active input handling을 Both로 교체하면 된다.

이론적 배경

※ 4명의 플레이어라는 가정 - 4개의 게임 세상이 존재(컴퓨터 1대 당 1세상 존재) A가 로컬 플레이어라면 나머지 B, C, D,는 리모트 플레이어 B가 로컬 플레이어라면 나머지 A, C, D,는 리모트 플레이어 ... - 로컬 플레이어는 다른 플레이어들에게 정보를 공유하는 방식(동기화 Sync) - 결국 동기화는 필수 요소 ※ 서버-클라이언트와 권한 분리 * 서버 - 서비스를 제공하는 컴퓨터 - 게임 세상을 마련해줌 * 클라이언트 - 서버에 찾아가서 서비스를 받는 컴퓨터 - Dedicated Server와 Host Server로 나뉨 * Host Server - 3명의 클라이언트가 존재한다면, 그 중에 하나는 Host이자 Server가 됨 - Host가 다른 클라이언트의 정보를 받아서 동기화를 관리..

게임시스템 기획

시스템 기획 게임시스템기획은 데이터와 데이터를 이용한 연산으로 콘텐츠를 설계할 수 있게 해주는 것을 말한다. 따라서 게임시스템을 기획하기위해서는 사용되는 데이터와 데이터의 논리적 관계에 대한 분석이 선행되어야 한다. 사용되는 테이터 형태 - 테이블 형태(관계형 데이터 베이스) 인덱스 데이터1 데이터2 데이터3 데이터4 데이터5 데이터6 데이터7 1001 1002 1003 테이블형 데이터 예시 - 비테이블 형태 데이터 분석 2가지로 구분 - 객체와 객체 간의 분석 : 몬스터, 플레이어, 지형 등의 객체 간의 데이터 분석 - 객체 내부의 분석 : 몬스터 내부의 데이터 분석 시스템 규칙 기획 게임플레이 규칙에 대한 정의 - 규칙의 예 캐릭터 조작 방법 몬스터 생성 방법 캐릭터와 몬스터의 상성관계 특정 몬스터 ..

Command Pattern

Command Pattern is a behavioral design pattern taht turns a request int a stand-alone object that contains all information bout the request. 명령 패턴은 요청에 대한 모든 정보를 포함하는 독립 실행형 개체로 요청을 전환하는 행동 디자인 패턴이다. 플레이어에 대한 로직을 짤 때 초보적인 발상으로 PlayerController에 마구 때려넣는 식으로 코딩을 하는 경우 많다. 예를 들면 PlayerController에 Move()와 Jump(), Attack() 등등의 함수를 구현해놓고 그 안에서 사용한다. 이런 방식이 잘못된 것은 아니지만 결국 유지,보수에 치명적이며, 협업할 시 코드가 너무 많아져..

적 케릭터 닷지 회피 구현(Enemy Dodge System)

게임을 개발하던 중에 젤다의 전설 야생의 숨결에서 보코블린(적 케릭터)가 공격을 회피(닷지) 하는 것이 생각나서 구현해보았다. [SerializeField] private float dodgeChance = 0.3f; // 닷지 확률(0 ~ 1f 사이 값) [SerializeField] private float dodgeAngle = 30; // 반각 30도, 총 60도 각도 [SerializeField] private float dodgeDistance = 5f; // 닷지할 포인트 거리 [SerializeField] private float counterattackChance = 0.3f; // 닷지 후 반격 찬스 // 플레이어가 공격했을 때 Action을 작동 private void Awake() ..