목차

  1. 들어가기
  2. Collider 2D란?
  3. Collider 2D의 각 기능
  4. 스크립트에서 Collider 2D 접근 방법

1. 들어가기

아래와 같이 플레이어 오브젝트에 Rigidbody2D 컴포넌트를 추가할 경우 질량이 생겨서 중력에 의해 아래로 떨어집니다.

Rigidbody2D 컴포넌트만 있을 때 게임 실행 화면 / Collider 2D 컴포넌트 추가 후 게임 실행 화면

 

왼쪽처럼 게임 화면에서 플레이어가 사라지는 현상을 막기 위해 Collider 2D 컴포넌트를 추가해줘야 합니다.

단, 플레이어 오브젝트에만 넣으면 안되고 필드 오브젝트에도 넣어주어야

오른쪽처럼 두 오브젝트가 닿았을 때 통과되지 않고 플레이어가 지면 위에 있는 것처럼 나타나게 됩니다.(충돌 처리)


2. Collider 2D란?

- 물리적 충돌을 위한 2D 게임 오브젝트의 모양 정의

- 이름에 2D가 포함되지 않은 콜라이더는 3D 게임 오브젝트에만 사용

- Rigidbody2D와 똑같이 Collider 2D와 Collider 컴포넌트는 동시에 사용할 수 없음

Collider 2D의 종류


3. Collider 2D의 각 기능

Circle Collider 2D / 콜라이더 편집(Edit Collider)

콜라이더 편집
(Edit Collider)
충돌 영역 지정
머티리얼
(Material)
충돌과 관련된 프로퍼티를 결정하는 Physics Material 2D 선택 
트리거
(Is Trigger)
콜라이더 2D가 트리거처럼 작동 (물리 시스템은 콜라이더 2D를 무시)
- 이 옵션을 활성화하면 '강제 전송 레이어', '강제 수신 레이어' 옵션이 사라짐
이펙터에서 사용
(Used by Effector)
연결된 이펙터 2D가 이 콜라이더 2D를 사용
오프셋
(Offset)
콜라이더 2D 지오메트리의 로컬 오프셋 값을 설정
반지름
(Radius)
써클 콜라이더 2D의 반지름을 로컬 공간 단위로 설정
Layer Overrides
레이어 오버라이드 설정
Layer Override Priority 콜라이더 우선순위 지정
Include Layers 이 콜라이더 2D에 포함해야 하는 추가 레이어 선택
Exclude Layers 이 콜라이더 2D에 제외해야 하는 추가 레이어 선택
Force Send Layers 충돌 접촉 시 힘을 보낼 수 있는 레이어 선택
Force Receive Layers 충돌 접촉 시 힘을 받을 수 있는 레이어 선택
Contact Capture Layers 캡쳐할 접촉한 레이어 선택
Callback Layers 충돌을 보고하거나 콜백을 트리거할 레이어 선택
Info 오브젝트의 Circle Collider 2D 정보

 

Box Collider 2D / '합성에 사용됨' 옵션

합성에 사용됨
( Used by Composite )
연결된 Composite Collider 2D에서 사용할 때 설정
- 이 옵션을 활성화하면 '머티리얼', '트리거', '이펙터에서 사용' 옵션이 사라짐
자동 타일링
(Auto Tiling)
 Collider 2D의 모양 자동 설정 여부
크기
(Size)
로컬 공간 단위로 나타난 박스 크기를 설정
엣지 반지름
(Edge Radius)
콜라이더의 가장자리를 중심으로 반지름을 형성하는 값을 설정
=> 코너가 둥글고 볼록한 대형 콜라이더 2D 생성
기본값: 0 (반지름 없음)

 

흔히 사용하는 Circle Collider 2D와 Box Collider 2D만 알아보았고, 나머지는 공식 매뉴얼을 참고해주세요.


4. 스크립트에서 Collider 2D 접근 방법

스크립트에서는 각각의 Collider 2D 클래스를 제공해줍니다.

따라서 클래스 객체 선언 -> 초기화 -> 호출 과정을 통해 충돌 처리를 해주면 됩니다.

스페이스 바를 눌렀을 때 변경되는 BoxCollider 2D 옵션들


참고자료

 

콜라이더 2D - Unity 매뉴얼

Colliders 2D 컴포넌트는 물리적 충돌을 위한 2D 게임 오브젝트의 모양을 정의합니다.보이지 않는 콜라이더는 게임 오브젝트의 메시와 모양이 완전히 똑같을 필요가 없습니다. 대략적인 근사치는

docs.unity3d.com

 

목차

  1. Rigidbody2D란?
  2. Rigidbody2D와 Rigidbody의 차이
  3. Rigidbody2D의 각 기능
  4. 스크립트에서 Rigidbody2D 접근 방법

1. Rigidbody2D란?

- 오브젝트를 물리 제어 하에 작동시키는 데 사용할 수 있는 2D 컴포넌트

- 즉, 오브젝트의 중력, 질량, 드래그, 운동량에 대한 반응과 같은 물리 기반 동작을 제어할 수 있는 설정

 


2. Rigidbody2D와 Rigidbody의 차이

  • Rigidbody2D : Rigidbody의 2D 개발 버전
  • Rigidbody : 3D 개발 버전

Rigidbody2D와 Rigidbody
Rigidbody2D와 Rigidbody는 컴포넌트 충돌이 일어나기 때문에 동시에 추가할 수 없다.

 


3. Rigidbody2D의 각 기능

Dynamic, Kinematic, Static Rigidbody2D

바디 타입(Body Type) 리지드바디 2D의 컴포넌트 설정
=> 움직임(포지션 및 회전) 동작 및 콜라이더 2D 상호작용을 조작


- 동적(Dynamic) : 움직여야 하는 항목에 가장 일반적인 바디 타입

- 키네마틱(Kinematic) : 중력과 힘의 영향을 받지 않아 스크립트를 통해 이동하는 타입
- 정적(Static) : 시뮬레이션 상태에서 전혀 움직이지 않는 타입
머티리얼(Material) 특정 부모 리지드바디 2D에 연결된 모든 콜라이더 2D의 공통 머티리얼 지정
시뮬레이션됨(Simulated) 리지드바디 2D 및 연결된 모든 콜라이더 2D와 조인트 2D가 런타임에 물리 시뮬레이션과 상호작용 여부 결정
자동 질량 사용(Use Auto Mass) 리지드바디 2D가 콜라이더 2D에서 게임 오브젝트의 질량을 자동으로 감지할 때 사용
질량(Mass) 오브젝트의 질량 (단위:kg)
선 항력(Linear Drag/Drag) 포지션 움직임에 영향을 미치는 저항계수
각 항력(Angular Drag) 회전 움직임에 영향을 미치는 저항계수
중력 스케일(Gravity Scale) 게임 오브젝트가 중력의 영향을 받는 정도
충돌 검사(Collision Detection) 콜라이더 2D 간의 충돌을 검사하는 방식 정의

- 이산(Discrete) : 매우 빠르게 충돌할 경우 서로 겹치거나 통과 가능
- 연속(Continuous) : 서로 겹치거나 통과하지 않음. Discrete보다 CPU 사용 시간이 길어짐
휴면 모드(Sleeping Mode) 오브젝트가 휴식 상태일 때 프로세서 시간 절약을 위해 수면 모드에 들어가는 방법 정의

- 휴먼하지 않음(Never Sleep) : 수면 모드 비활성화(리소스 영향으로 비추천)
- 활성 상태 시작(Start Awake) : 처음부터 비수면 모드
- 휴먼 시작(Start Asleep) : 처음엔 수면 모드, 충돌하면 비수면 모드
보간(Interpolate) 물리 업데이트 사이에 오브젝트 움직임이 보간되는 방법 정의(움직임이 어색할 때 유용)

- 없음 : 움직임에 스무딩 적용X
- 보간(Interpolate) : 이전 프레임에서 오브젝트 포지션을 기반으로 움직임에 스무딩 적용
- 외삽(Extrapolate) : 다음 프레임에의 오브젝트 포지션을 추정해 움직임에 스무딩 적용
Constraints  리지드바디 2D의 움직임에 대한 제약사항 정의 (포지션 고정, 회전 고정)
Layer Overrides 다른 콜라이더 2D와의 충돌 여부를 결정할 때 이 리지드바디 2D에 연결된 모든 콜라이더 2D가 포함/제외해야 하는 추가 레이어 선택
Info 오브젝트 정보

위의 표는 Dynamic일 때의 기능들입니다. Kinematic과 Static은 공식 매뉴얼을 참고해주세요.

 

Rigidbody2D를 통해 중력 가속도(떨어지는 속도)를 설정할 수 있습니다.

만약 중력 가속도를 증가(떨어지는 속도를 빠르게)하고 싶다면 질량을 줄이고 중력 스케일을 늘리는 것을 통해 구현할 수 있습니다.


4. 스크립트에서 Rigidbody2D 접근 방법

스크립트에서는 Rigidbody2D 클래스를 제공해줍니다.

따라서 클래스 객체 선언 -> 초기화 -> 호출 과정을 통해 물리 제어를 해주면 됩니다.

GetComponent는 <>안에 컴포넌트 타입을 적으면 해당하는 타입의 컴포넌트를 가져옵니다.
스페이스 바를 눌렀을 때 변경되는 Rigidbody2D 기능들


참고자료

 

 

리지드바디 2D - Unity 매뉴얼

Rigidbody 2D 컴포넌트는 오브젝트를 물리 엔진이 제어하게 만듭니다. 스탠다드 Rigidbody 컴포넌트와 유사한 많은 개념이 리지드바디 2D에도 적용되나 2D에서는 오브젝트가 XY 평면에서만 움직이고 그

docs.unity3d.com

 

 

Rigidbody2D - Unity 스크립팅 API

Rigidbody physics component for 2D sprites.

docs.unity3d.com

 

 

Component-GetComponent - Unity 스크립팅 API

Gets a reference to a component of type T on the same GameObject as the component specified.

docs.unity3d.com

 

모든 프로젝트는 작업 효율성을 높이고 협업을 용이하게 하기 위해 체계적인 폴더 구조를 선호합니다.

이런 폴더 구조는 팀에서 정해진 규칙에 따라 작성되므로 팀에 따라 달라지게 됩니다.

 

이번엔 일반적으로 사용되는 유니티 프로젝트 폴더 구조를 한 번 살펴보겠습니다.

<유니티 폴더 구조>

프로젝트 생성 직후 폴더 목록

  • .vscode : 해당 프로젝트의 Visual Studio Code 설정 파일이 모여있는 폴더.
  • Assets(필수) : 프로젝트의 모든 에셋(스크립트, 씬, 프리팹, 텍스처 등)이 모여있는  폴더.
  • Library : Unity가 자동으로 생성하는 임포트된 에셋과 캐시 데이터 파일이 모여있는 폴더.
  • Logs : 로그 파일이 모여있는 폴더.
  • Packages(필수) : 해당 프로젝트의 패키지 파일이 모여있는 폴더.
  • ProjectSettings(필수) : 전반적인 프로젝트 설정이 모여있는 폴더.
  • Temp : 임시 파일이 모여있는 폴더.
  • UserSettings : 개발자 개인의 에디터 설정 파일이 모여있는 폴더.

기본적으로 Git과 같은 저장소에 커밋할 경우 Assets, Packages, ProjectSettings를 커밋하면 됩니다.

나머지는 유니티에서 자동으로 관리해주기 때문에 개발자가 따로 조작하지 않아도 됩니다.


<유니티 Assets 하위 폴더 구조>

2D 프로젝트 Assets 폴더 구조

Assets 하위 폴더에는 여러 가지 요소들을 담고 있는 폴더들을 만들 수 있습니다.

순서를 깔끔하게 하기 위해 저는 앞에 번호를 붙이고 있습니다.

 

아래는 각 폴더들의 기능 및 역할, 구체적인 예시입니다.

  • Scripts: C# 스크립트 파일을 저장합니다.
  • Scenes: 게임 씬 파일을 저장합니다.
  • Prefabs: 프리팹 파일을 저장합니다.
  • Sprites: 2D 그래픽 파일을 저장합니다.
  • Models: 3D 모델 파일을 저장합니다.
  • Materials: 머티리얼 파일을 저장합니다.
  • Textures: 텍스처 파일을 저장합니다.
  • Audio: 오디오 파일을 저장합니다.
  • Animations: 애니메이션 파일을 저장합니다.
  • UI: UI 관련 파일을 저장합니다.
더보기

구체적인 Assets 폴더 파일 구조 예시


Assets

├── Animations        // 애니메이션 클립 파일들

├── Audio             // 사운드 파일들
│   ├── Music         // 배경 음악 파일들
│   └── SFX           // 효과음 파일들

├── Materials         // 머티리얼 및 쉐이더 파일들

├── Models            // 3D 모델 파일들

├── Prefabs           // 프리팹 파일들
│   ├── Characters    // 캐릭터 관련 프리팹
│   ├── Environment   // 환경 요소 프리팹
│   └── UI            // UI 요소 프리팹

├── Scenes            // 씬 파일들

├── Scripts           // 스크립트 파일들
│   ├── Player        // 플레이어 관련 스크립트
│   ├── Enemies       // 적 관련 스크립트
│   ├── UI            // UI 관련 스크립트
│   └── Utilities     // 유틸리티 및 헬퍼 스크립트

├── Sprites           // 2D 스프라이트 파일들
│   ├── Characters    // 캐릭터 스프라이트
│   ├── Environment   // 배경 및 환경 스프라이트
│   ├── UI            // UI 스프라이트
│   └── Effects       // 특수 효과 스프라이트

└── Textures          // 기타 텍스처 파일들


<프로젝트 템플릿 설정 방법>

Assets 폴더들은 새 프로젝트가 시작되면 다시 만들어야 하는 번거로움이 있습니다.

이런 문제를 해결하기 위해 유니티에서는 프로젝트 템플릿이라는 설정을 제공합니다.

 

다음으로 프로젝트 템플릿 설정 방법입니다.

  1. 기존 프로젝트 폴더 구조 설정: 먼저, 이전에 만들어 둔 에셋 폴더 구조를 기준으로 하여 새로운 프로젝트 템플릿을 만듭니다. 기존 프로젝트에서 사용한 폴더명과 구조를 잘 기억하고 있어야 합니다.
  2. 새로운 프로젝트 생성: 유니티 허브(Unity Hub)를 열고 "New" 버튼을 클릭하여 새로운 프로젝트를 생성합니다.
  3. 템플릿 선택: "Template" 항목에서 "Custom"을 선택하고, "Create from Template" 버튼을 클릭합니다.
  4. 템플릿 설정: 다음으로 나오는 창에서 필요한 설정을 입력합니다. 여기서 "Copy settings from" 옵션을 사용하여 이전에 만든 프로젝트의 폴더 구조와 설정을 기반으로 새로운 프로젝트를 설정할 수 있습니다.
  5. 생성 완료: 설정이 완료되면 "Create" 버튼을 클릭하여 새로운 프로젝트를 생성합니다. 이제 새로운 프로젝트에서는 이전 프로젝트의 폴더 구조와 설정이 적용될 것입니다.

이 설정은 초기 폴더 구조 설정에 도움을 줄 수 있지만,

스크립트나 에셋 파일 자체는 별도로 가져오거나 작성해야 합니다.

또한, 프로젝트 템플릿과 에디터의 버전에 차이가 있다면 템플릿을 업데이트 하거나 수정해야 합니다.


참고자료

 

에셋 임포트 - Unity 매뉴얼

프로젝트의 Assets 폴더로 파일을 직접 익스포트하거나 해당 폴더로 복사하면 Unity로 생성하지 않은 에셋을 Unity 프로젝트로 가져올 수 있습니다. 여러 일반적인 포맷의 소스 파일을 프로젝트의 As

docs.unity3d.com

 

 

유니티 프로젝트 구조 이해하기

안녕하세요, GameLabMaster입니다. 오늘은 유니티 프로젝트의 기본 구조를 이해하고, 각 폴더와 파일의 역할을 알아볼 것입니다. 게임 개발을 시작하려면 유니티 프로젝트 구조에 대한 이해가 중요

gamemakerslab.tistory.com

 

 

Unity) Project Structure (유니티 프로젝트 구조 및 모범 사례)

Project Structure (유니티 프로젝트 구조 및 모범 사례) Unity Project의 파일에서 실질적으로 구성하는 폴더는 Asset, Packages, ProgjectSetting 3가지로 구성된다. 나머지는 유니티를 실행하는 과정에서 해당

drehzr.tistory.com

 

잘못된 정보가 있으면 댓글로 피드백 부탁드립니다.

 감사합니다:)

스크립트에서 키보드 조작키 접근하는 방법

목차


 

GetAxis(), GetButton(), GetKey()

 

키보드 조작키 접근 방법으로는 크게

Input 클래스의 GetAxis(), GetButton(), GetKey()로 3가지가 있습니다.

(Input 클래스 : 사용자 입력 메서드를 모아둔 클래스)

        // 방향키 위쪽을 누르면
        if (Input.GetKey(KeyCode.UpArrow)) {
 
            float verticalAxis = Input.GetAxis("Vertical");
            float verticalAxisRaw = Input.GetAxisRaw("Vertical");
            bool verticalButton = Input.GetButton("Vertical");
            bool verticalButtonDown = Input.GetButtonDown("Vertical");
            bool verticalButtonUp = Input.GetButtonUp("Vertical");
            bool verticalKey = Input.GetKey("up");
            bool verticalKeyDown = Input.GetKeyDown(KeyCode.UpArrow);
            bool verticalKeyUp = Input.GetKeyUp(KeyCode.UpArrow);

            Debug.Log("GetAxis : " + verticalAxis); // -1 ~ 1 사이 실수
            Debug.Log("GetAxisRaw : " + verticalAxisRaw); // 1
            Debug.Log("GetButton : " + verticalButton); // True
            Debug.Log("GetButtonDown : " + verticalButtonDown); // True
            Debug.Log("GetButtonUp : " + verticalButtonUp); // False
            Debug.Log("GetKey : " + verticalKey); // True
            Debug.Log("GetKeyDown : " + verticalKeyDown); // True
            Debug.Log("GetKeyUp : " + verticalKeyUp); // False
 
        } else {
 
            float verticalAxis = Input.GetAxis("Vertical");
            float verticalAxisRaw = Input.GetAxisRaw("Vertical");
            bool verticalButton = Input.GetButton("Vertical");
            bool verticalButtonDown = Input.GetButtonDown("Vertical");
            bool verticalButtonUp = Input.GetButtonUp("Vertical");
            bool verticalKey = Input.GetKey(KeyCode.UpArrow);
            bool verticalKeyDown = Input.GetKeyDown(KeyCode.UpArrow);
            bool verticalKeyUp = Input.GetKeyUp(KeyCode.UpArrow);

            Debug.Log("GetAxis : " + verticalAxis); // 0
            Debug.Log("GetAxisRaw : " + verticalAxisRaw); // 0
            Debug.Log("GetButton : " + verticalButton); // False
            Debug.Log("GetButtonDown : " + verticalButtonDown); // False
            Debug.Log("GetButtonUp : " + verticalButtonUp); // False
            Debug.Log("GetKey : " + verticalKey); // False
            Debug.Log("GetKeyDown : " + verticalKeyDown); // False
            Debug.Log("GetKeyUp : " + verticalKeyUp); // False
 
        }

GetAxis()는 결과값을 실수 타입(float)으로 반환하고

나머지 GetButton()과 GetKey()는 논리 타입(bool)으로 반환합니다.

 

GetAxis()의 매개변수에는 속성 이름으로 적고,

GetButton()과 GetKey()의 매개변수에는 KeyCode로 접근하거나 키 이름으로 적습니다.

 


 

GetAxis() 값 확인

GetAxis() 값 확인

GetAxis()는 -1~1 사이의 실수를 반환합니다.

오른쪽 로그 사진은 방향키 위 버튼, 아래 버튼을 차례로 누른 결과입니다.

 

위 버튼(양의 방향 버튼)을 누르면 0보다 크고 1보다 작은 값을 반환합니다.

아래 버튼(음의 방향 버튼)을 누르면 -1보다 크고 0보다 작은 값을 반환합니다.

버튼을 누르지 않으면 0을 반환합니다.

 

GetAxisAraw()는 GetAxis()와 같은 기능이지만 반환값이 -1, 0, 1로 고정되어 있습니다.

 


 

GetButton(), GetButtonDown(), GetButtonUp() 차이

GetButton(), GetButtonDown(), GetButtonUp() 차이

GetButton()은 해당 버튼을 누르고 있는 동안 true를 반환합니다.

GetButtonDown()은 해당 버튼을 눌렀을 때 true를 반환합니다.

GetButtonUp()은 해당 버튼을 떼었을 때 true를 반환합니다.

 

이는 GetKey(), GetKeyDown(), GetKeyUp()에도 동일하게 적용됩니다.


그러면 아래에서는 왜 GetButtonUP()과 GetKeyUp()이 False일까요.

그 이유는 위의 조건문 때문입니다.

해당 조건문은 버튼을 누른 상태가 전제가 되어야 로그값이 나오는데

-Up() 메서드 같은 경우에는 떼어야 true가 반환됩니다.

 

따라서 버튼은 뗀 순간 조건문이 적용이 되지 않기 때문에

true인 -Up() 메서드는 로그에 출력되지 않습니다.

 


 

KeyCode

KeyCode 자동완성 및 값

KeyCode는 GetKey()의 매개변수로 사용할 수 있는 실제 키 메서드입니다.

 

오른쪽 사진처럼 실제 KeyCode 메서드를 보면 각 변수가 정수로 초기화되어 있습니다.

따라서 KeyCode 변수는 int 타입으로

GetAxis()나 GetButton()의 매개변수로는 사용할 수 없습니다.

 

많이 사용하는 방향키는 UpArrow, DownArrow, RightArrow, LeftArrow이며

일반 w, a, s, d 키는 그대로 W, A, S, D 입니다.

 

더 많은 KeyCode 종류는 아래 링크를 확인해주세요.

https://docs.unity3d.com/kr/2022.3/ScriptReference/KeyCode.html

 

KeyCode - Unity 스크립팅 API

Key codes returned by Event.keyCode. These map directly to a physical key on the keyboard. If "Use Physical Keys" is enabled in Input Manager settings, these map directly to a physical key on the keyboard. If "Use Physical Keys" is disabled these map to la

docs.unity3d.com

 


 

근데 실제로 개발을 하다 보면

키보드를 한 번 눌렀는데 콘솔창에 나타나는

GetAxis(), GetButton(), GetKey()  로그는 여러 개가 나옵니다.

 

그 이유는 컴퓨터의 작업 처리는 사람의 속도보다 훨씬 빠르기 때문입니다.

우리는 한 번 누른 것 같지만 컴퓨터는 그 잠깐 눌렀다 뗀 시간 동안에도

버튼을 누른 상태로 인식하여 처리하기 때문에

누르고 있는 동안 출력되는 로그는 생각하는 것보다 여러 번 나오게 됩니다.

 


총정리

아래는 위의 내용들을 정리한 표입니다.

메서드 매개변수
(매개변수타입)
반환타입 반환값
GetAxis()  축 이름
(string)
float -1 < 실수 < 0 : 속성의 음의 방향 버튼
0 : 아무것도 누르지 않음
0 < 실수 < 1 : 속성의 양의 방향 버튼
GetAxisRaw() -1 : 속성의 음의 방향 버튼
0 : 아무것도 누르지 않음
1 : 속성의 양의 방향 버튼
GetButton() bool True : 해당 버튼을 누르고 있음
False : 해당 버튼을 누르고 있지 않음
GetButtonDown() True : 해당 버튼을 눌렀음
False : 해당 버튼을 누르지 않았음
GetButtonUp() True : 해당 버튼을 떼었음
False : 해당 버튼을 떼지 않았음 
GetKey() 실제 키 이름 /
KeyCode 변수
(string / int)
bool True : 해당 버튼을 누르고 있음
False : 해당 버튼을 누르고 있지 않음
GetKeyDown() True : 해당 버튼을 눌렀음
False : 해당 버튼을 누르지 않았음
GetKeyUp() True : 해당 버튼을 떼었음
False : 해당 버튼을 떼지 않았음 

 

 

이외의 조이스틱, 마우스 등을 다루는 함수는 아래 공식 링크를 확인해주세요.

 

UnityEngine.Input - Unity 스크립팅 API

Interface into the Input system.

docs.unity3d.com

 

 

잘못된 정보가 있으면 댓글로 피드백 부탁드립니다.

 감사합니다:)

PC 키보드 조작 설정

보통 PC 게임은 wasd키나 방향키, 스페이스 바, 마우스를 이용하여 조작을 하게 됩니다.

 

유니티에서는 이런 키들을 이용하여 캐릭터를 움직일 수 있게 하는

'입력 관리자(Input Manager)'라는 설정을 제공합니다.

여기서 가로 이동, 세로 이동, 점프, 제출, 취소 등의 작업을 원하는 키로 설정할 수 있습니다.

 

'입력 관리자 (Input Manager)' 경로
편집(Edit)  >  프로젝트 설정(Project Setting)  >  입력 관리자(Input Manager)

편집 > 프로젝트 설정 > 입력 관리자

 

각각의 축(이하 속성)을 열어보면 이름, 양의 방향버튼, 음의 방향 버튼, 출력, 민감도 등이 보입니다.

가로, 세로, 점프 설정 화면

 

각각의 속성에 대한 기능은 아래와 같습니다.

속성의 기능

대부분의 속성들은 Positive Button(양의 방향 버튼)을 기준으로 작동입니다.

예를 들어 오른쪽으로 움직이는 것을 d키로 지정하고 싶으면

Positive Button(양의 방향 버튼)에 'd'라고 적어주시면 됩니다.

 

또한 스크립트에서 속성에 접근(액세스)하기 위해서는 속성의 이름 및 키 이름을 사용합니다.

예시)

Input.GetButton("Jump")

Input.GetKey("up") / Input.GetKey(KeyCode.UpArrow)


참고자료

 

입력 관리자 - Unity 매뉴얼

Input Manager 창에서 프로젝트에 대한 입력 축 및 축과 관련된 행동을 정의할 수 있습니다. 액세스하려면 Unity의 메인 메뉴에서 Edit > Project Settings로 이동한 후 오른쪽 내비게이션에서 Input Manager를

docs.unity3d.com

 

잘못된 정보가 있으면 댓글로 피드백 부탁드립니다.

감사합니다:)

+ Recent posts