유니티 C# 18

유니티 입력 처리 심화 - (3) Action Asset 방식_02

이전 포스트에서는 Action Asset의 세부사항과 구성에 대해 알아보았습니다.이번 포스트에서는 본격적으로 Action Asset을 C# 스크립트에서 사용하는 방식에 대해 알아보겠습니다.스크립트에서 Action Asset을 사용하는 방식은 총 2가지로 구분할 수 있습니다. 1) Inspector 참조를 통한 사용사용하는 코드는 다음과 같습니다.public class InspectorRef : MonoBehaviour{ // Action Asset public InputActionAsset actionAsset; // Action Asset 아래의 Action Map private InputActionMap inGround; // Action Map 아래의 Action p..

유니티 입력 처리 심화 - (3) Action Asset 방식_01

지난 포스트에서는 임베디드 방식을 통해 입력을 처리하는 방식을 배워보았습니다.임베디드 방식의 경우, 입력 장치에서 받아온 값을 바로 C# 스크립트로 처리할 수 있어구현이 간단하고 편리하지만, 게임의 규모가 커질 수록입력을 다양한 방법으로 처리하지 못한다는 단점이 있습니다. 이번 포스트에서는 기존의 간단한 게임에서의 입력 처리 방식이 아닌규모가 있는 게임에서의 입력 처리 방식 중 하나인 Action Asset을 통한 입력 처리를 알아보겠습니다. 1) Action Asset Action Asset은 위와 같이 동작하게 됩니다.정확히 말하면, Action Asset이라는 입력을 처리하는 명세서를 만들고해당 명세서에서 입력 동작 방식 + 입력 처리 방법 + 입력 반환 값등을 규정할 수 있습니다. 2) Actio..

유니티 입력 처리 심화 - (2) 임베디드 방식

지난 포스트에서는 입력장치에서 직접 값을 읽어오는 다이렉트 방식의 Input System을 알아보았습니다.이번 포스트에서는 Input Action을 통해 입력장치의 값을 읽어오는 임베디드 방식을 알아보겠습니다. 1) 임베디드 방식이란? 위와 같이 입력 장치에서 C# 스크립트로 입력값을 전달하되,Input Action을 통해 입력값을 전달하는 방식입니다.간단한 게임의 구조에서 사용할 수 있으며 Direct 방식에 비해서 입력을 자유롭게 설정할 수 있습니다. InputAction의 경우 입력장치로부터 입력값을 InputAction.CallbackContext를 통해 전달받습니다.그리고 입력장치로부터 입력방식은 다음의 3가지로 전달받게 됩니다.1 - 1) StartedAction이 연결된 키를 처음 누르는 경..

유니티 입력 처리 심화 - (1) Direct 방식

C# 기반의 게임엔진인 Unity에서는기존의 Input Maanger와 새로운 방식의 Input System을 사용하여 입력을 처리합니다.이 둘의 차이점에 대해서는 이전의 포스트에서 다뤄보았습니다. https://monstrosite.tistory.com/42 Input Manager와 Input System유니티에서는 두 개의 입력 시스템을 제공합니다.구형 입력 시스템인 Input Manager와 신형 입력 시스템인 Input System입니다. 사용자의 키 변경에 대응하기 위해 개발된 Input System은 기존의 Input Managemonstrosite.tistory.com 이번 포스트에서는 Input System을 조금 더 쪼개어 깊게 다뤄보고각 방식의 차이점에 대해서도 알아보겠습니다. 1) ..

Collision과 Trigger

Unity를 다루다 보면 물리 충돌은 매우 빈번하게 일어납니다.물리 충돌은 게임에서 무언가를 판단하는 매우 중요한 기능이므로 물리 충돌 없이는 사실상 게임이 돌아가지 않는다고 봐도 무방할 정도입니다. 그리고 Unity에서는 이러한 충돌을 위해 2가지의 기능을 제공합니다.오늘은 위의 2가지 기능과 그 차이를 중점으로 한번 알아보겠습니다. 1) CollisionCollision은 실제 물리 충돌을 판단합니다.총알이 피격당하거나 휘두른 검에 맞는 등의 실제 물리 충돌을 판단하는 것이 바로 Collision입니다. Collision의 경우 판단하는 함수는 OnColiisionEnter() 입니다.그렇다면 판단하는 조건에 대해서도 알아봐야 하는 것이 당연합니다.Collision의 판단 조건은 다음과 같습니다. 충..

마우스 입력을 통한 캐릭터 이동

이번 포스트에서는 마우스 입력을 통한 캐릭터의 이동을 알아보겠습니다.조금만 응용해도 모바일 환경에서의 터치에 대한 입력으로도 변형이 가능한 유용한 예제입니다. 1) 소스코드public class PlayerController : MonoBehaviour{ bool moveToDest = false; Vector3 destPos; private void Update() { OnMouseDown(); if (moveToDest) { MovePlayer(); } } void OnMouseDown() { if (Input.GetMouseButtonDown(0)) { ..

오브젝트 풀

게임에는 컴퓨터의 리소스와 직접적인 연관이 있는 요소가 있습니다.눈을 사로잡는 화려한 이펙트나 디테일하게 다뤄지는 물리 효과, 정교하게 다듬어진 모델링이 그러합니다. 그러나 컴포터의 리소스를 직접적으로 조절하는 것은 결국 게임의 역할입니다.최적화를 얼마나 잘 수행했느냐가 바로 리소스를 조정하고 게임을 더 재미있고 역동적으로 만들기 때문입니다. 이번 포스트에서 소개해드릴 오브젝트 풀은 바로 이 최적화와 관련이 있습니다.먼저 유니티 코리아에서 제공하는 오브젝트 풀과 관련되 동영상을 링크로 올려드리겠습니다. https://www.youtube.com/watch?v=jvJ1Vd7PGwk 오브젝트 풀은 총알이나 화살처럼 단순하지만 무수히 많이 생성되는 오브젝트를 다루는데 효과적입니다.떨어지는 물이 바위에 구멍을 ..

Input Manager와 Input System

유니티에서는 두 개의 입력 시스템을 제공합니다.구형 입력 시스템인 Input Manager와 신형 입력 시스템인 Input System입니다. 사용자의 키 변경에 대응하기 위해 개발된 Input System은 기존의 Input Manager와는 다른 설정방법을 갖고 있습니다.저 역시도 이를 사용하는 방법을 배우는데 많은 문제를 겪어 Input Manager와 Input System을 비교해가면서 설명드리고자 합니다. 1) Input ManagerInput Manager는  Input.GetAxis() 함수로 입력값을 읽어들입니다.이때 GetAxis의 인자는 다음의 과정으로 확인할 수 있습니다.  GetAxis의 인자로 사용할 수 있는 것은 위의 Name입니다.위의 문자열을 통해 GetAxis는 축을 인지..