콘텐츠로 이동

Chapter 3. 방향키 이동

'골드 메탈 유니티 기초강좌' B6 학습 내용

1절. Input Class

2절. 키보드 / 마우스 입력

3절.

4절.

1절. Input Class

입력 클래스(Input Class)

  • 유니티에서 키보드와 마우스 입력을 처리하기 위해 사용하는 클래스
  • 모든 입력 값을 관리
  • AnyKeyDown() 함수로 키를 눌렀을 때 이벤트를 감지
  • 사용자가 특정 키를 지속적으로 누르고 있는 경우를 감지하는 로직을 추가 가능

AnyKeyDown()

  • 불 값 반환
  • 사용자가 키를 누를 때마다 해당 이벤트를 감지하여 디버그 로그 출력
  • 마우스 오른쪽 버튼, 스페이스바, 영문자, 숫자 등 다양한 입력이 감지

2절. 키보드 / 마우스 입력

입력 처리

  • 3가지 경우

  • 누르는 깊이

  • 누른 직후
  • 꾹 누르기
  • 입력을 떼는 경우

  • 입력 함수에서 키 코드로 특정 키를 선택 가능

  • 엔터키와 키패드 엔터키의 차이 이해 필요

방향키

  • 꾹 누르고 있으면 해당 방향으로 이동
  • 누른 후 떼면 움직임이 멈추는 방식
  • 플레이어 조작 시 키보드 입력은 중요한 역할
  • 게임 환경에서의 상호작용 가능

입력 처리

  • 마우스 입력 처리 함수

  • GetMouseButtonDown()

  • GetMouseButtonUP()
  • GetMouseButton()

  • 마우스 왼쪽 버튼 : 0번

  • 마우스 오른쪽 버튼 : 1번

  • 슈퍼 점프 발생 특정 상황

  • 스페이스바를 오래 누를 경우
  • 마우스 버튼을 유지할 경우

인풋 매니저

  • 무선 버튼 설정 가능
  • 다양한 키와 버튼 기능을 정의
  • 특정 키를 변경 시 이용
  • 인풋 매니저에서 해당 버튼 설정 변경
    • 기본적인 방향키와 WASD 키 설정 완료

방법

  • 다양한 디바이스 동시 설정 가능
  • 각각의 버튼에 대해 개별적 설정 가능
  • 키보드 입력을 통해 이동 및 동작제어 가능
  • 정확한 대소문자 입력 필수
  • 특정 키를 동시에 누를 때 발생하는 동작
  • 왼쪽(-1)과 오른쪽(1)의 입력 값 설정 가능

GetAxis()

  • 부드럽고 자연스러운 이동감 구현 가능
  • 다양한 게임에서 활용
  • 가속도를 추가하여 입력에 따른 반응성을 조절 가능
  • 유연한 이동 가능

디바이스 설정

  • 왼쪽 버튼을 눌러 특정 기능을 실행할 수 있으며, 클릭 후 떼면 동일하게 동작하는 모습을 확인할 수 있다. [4-2]

입법 버튼의 경우, 물리적 입력 장치인 키보드와 마우스에 구애받지 않고 여러 장치를 동시에 설정할 수 있다는 점을 강조한다. [4-5]

이 외에도 모바일 장치인 아이폰 등 다양한 디바이스에서도 동일한 버튼 기능을 적용할 수 있다는 내용을 전달한다. [4-7]

또한, 이동 시 부여된 자유를 사용자가 경험할 수 있도록 하고 있다. [4-9]

4.2. 키보드 및 마우스 입력 설정 방법

사용자는 인형의 배치를 마음대로 조정할 수 있으며, 추가적으로 사이즈를 지정해야 한다. [4-11]

버튼 설정을 위해 눌러주면 원하는 기능을 자유롭게 선택할 수 있다. [4-14]

기존의 설정 외에도 사용자가 직접 버튼 추가 및 수정이 가능하다. [4-19]

설정된 키 중에서 자주 사용하지 않는 키는 필요에 따라 수정할 수 있으며, 사용자 맞춤형으로 변경이 가능하다. [4-23]

다른 키와의 중복 설정이 발생할 수 있어, 이를 관리하면서 새로운 키를 추가하는 것이 중요하다. [4-22]

4.3. 키보드 입력으로 이동하기

키보드 입력을 통해서 횡 이동과 종 이동을 실습한다. [4-25]

대소문자를 정확히 입력해야 하며, 틀리면 코드가 작동하지 않는다. [4-26]

많은 사람들이 입력 오류로 인해 발생하는 오류에 대해 질문을 한다. [4-27]

게임 개발에서 회귀 동작을 구현할 때는 특정 키를 지속적으로 누르는 방식이 일반적이다. [4-30]

이동 기능은 특정 부분에서 추가적으로 조정될 수 있다. [4-31]

4.4. ️ 키보드 입력과 함수 작동 설명

각 시설 값이 존재하며, 값을 입력하는 방식이 중요하다. 특히, 축의 값을 설정할 때는 x 값을 사용해야 한다. [4-32]

함수인 oe 케이티스는 타임이 플루트 카쉬와 연관이 있으며, 여러 번 사용될 것이므로 이해가 필요하다. [4-34]

주변 요소를 표시해보면서 작동 원리를 확인하는 과정이 포함된다. [4-35]

무언가 실행되고 있으며, 다양한 값들이 결과적으로 나타나고 있음을 보여준다. [4-39]

요 겟 nts 함수는 키보드를 누를 때 즉시 반응하는 것이 아니라, 누르는 방식에 따라 반응 속도가 달라진다. 이는 가중치와 관련이 있으며, 1초 정도의 반응 시간을 포함한다. [4-43]

4.5. 키보드와 마우스 이동 구현

가중치 없이 좌우 이동을 구현해야 하며, 왼쪽은 -1, 오른쪽은 1로 설정된다. [4-46]

기본적으로 키 입력은 동시에 누를 수 있으며, 이를 통해 이동을 조정할 수 있다. [4-53]

이동 속도는 상수인 28,000으로 설정되며, 이는 특정 사건에 대한 반응으로 보인다. [4-50]

중간값을 활용한 입력값 설정 방식도 있으며, 이를 통해 부드러운 조작감을 제공할 수 있다. [4-59]

이와 같은 기법은 게임의 조작감에 일반적으로 사용되며, 예를 들어 "마리오"와 같은 게임에서 볼 수 있다. [4-62]

  1. 🎮 유니티에서 오브젝트 이동하기

유니티를 사용하여 키보드와 마우스입력에 따라 게임 오브젝트를 이동시킬 수 있다. [5-1]

모든 게임 오브젝트는 트랜스폼을 포함하고 있으며, 트랜스폼은 위치, 회전, 크기정보를 포함한다. [5-6]

트랜슬레이트 함수는 벡터값을 이용해 오브젝트를 지정한 방향으로 이동시킨다. [5-21]

벡터는 방향과 크기를 모두 가지며, 3차원공간에서의 이동을 표현하기 위해 사용된다. [5-27]

주어진 벡터값에 따라 오브젝트가 움직이지 않는 이유는 이동량이 0일 경우이다. [5-67]

5.1. 유니티에서 오브젝트 이동하기

유니티를 통해 키보드입력을 사용하여 게임 오브젝트를 이동시키는 과정을 설명한다. [5-1]

트랜스폼은 게임 오브젝트의 위치, 회전, 크기를 포함하는 필수 요소로, 항상 함께 존재해야 한다. [5-6]

게임 오브젝트와 트랜스폼은 일대일 관계로, 유니티는 기본적으로 이러한 변수를 초기화하여 제공한다. [5-7]

프로그래밍에 있어 클래스를 사용하여 변수 이름을 적절히 관리하는 것이 중요하며, 이는 게임 개발의 편리함을 더한다. [5-14]

실습을 통해 코드에서 트랜스폼을 설정하고 오브젝트 이동을 시도하는 방법을 제시한다. [5-16]

5.2. 벡터와 트랜슬레이트 함수의 활용

트랜슬레이트라는 함수는 벡터값을 입력받아 오브젝트를 쉽게 이동시킬 수 있는 기능을 제공한다. [5-20]

벡터는 x, y, z 축으로 구성된 3차원공간에서 방향과 크기를 나타내는 값으로 정의된다. [5-27]

3차원게임에서는 벡터값을 사용하여 오브젝트의 위치를 조정하며, 스칼라값과 벡터값의 구분이 중요하다. [5-29]

트랜슬레이트와 벡터값만으로도 게임에서 오브젝트를 쉽게 이동시킬 수 있다는 점을 강조한다. [5-64]

실제로 벡터값을 조정함으로써 오브젝트의 위치를 바꾸더라도, 그 변화가 정확히 반영되는 과정을 보여준다. [5-58]

5.3. 키보드와 마우스를 활용한 이동 이해하기

텐스 라이트는 이동을 의미하며, 이동의 정도는 들어가는 벡터의 크기에 따라 결정된다. [5-66]

이동을 위해서는 0 값이 아닌 벡터를 사용해야 하며, 이는 이동이 이루어질 수 있도록 하는 요소이다. [5-67]

X, Y, Z 축의 방향으로 모든 축에 대해 이동을 수행할 수 있다. [5-69]