Beginner Classroom
2016.04.05 11:27

Input 객체의 키코드 확장

Views 1385 Votes 0 Comment 8
Atachment
Attachment '2'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

 

Input.isPressed(keyName) 함수 또는 Input.isTriggered(keyName) 함수로 해당 키가 눌려있는지 확인을 해야 할 때 
 
해당 키코드가 없다면 키코드를 확장해야만 합니다. 
 
결론부터 말하자면, 이것은 굉장히 간단합니다
 
RPG Maker MV 에서는 Input 객체의 소스 코드가 공개되어있기 때문입니다.
 
다음과 같이, Input.keyMapper 라는 JSON 타입의 변수에 keyCode(키코드)와 keyName(키의 이름)을 설정해주면 됩니다.
 
키의 이름은 원하는 이름을 지정할 수 있지만, 키코드는 표준 키코드를 지정해줘야 합니다.
 
표준 키코드는 이 링크를 참고하시기 바랍니다.
 
1
Input.keyMapper[keyCode] = 'keyName';
cs
 
예제에서는 T 키를 눌렀을 때 메시지 박스를 띄워보도록 하겠습니다.
 
키코드 API 를 참고해보면 T 키의 keyCode 가 84 라는 것을 알 수 있습니다.
 
6.PNG

 

그러면 아래과 같이 키코드를 설정해줄 수 있습니다.
 
1
Input.keyMapper[84= 'T';
cs

 

이렇게 설정한 것을, 플러그인이나 스크립트로 만들어 실행을 해주면 정상적으로 처리가 됩니다. 

 
이제, 아래와 같은 스크립트를 병렬 이벤트로 실행시켜보면,
 
1
2
3
if(Input.isPressed('T')) {
 alert("T 를 눌렀습니다");
}
cs
 
아래와 같이 T 키를 눌렀을 때 메시지 박스가 뜨게 됩니다.
 
7.PNG

 

?
  • ?
    A구몽 2016.04.14 10:14
    RPGmakerVX ace 에서 키코드 확장은 어떻게되는지 알려주실 수 있나요?
  • profile
    러닝은빛 2016.04.14 19:06
    https://msdn.microsoft.com/en-us/library/windows/desktop/ms646293(v=vs.85).aspx

    윈도우에서 제공하는 위 링크와 같은 키보드 API 함수를 Win32API 로 바인딩하여 Input 객체를 확장해야 합니다. 프로그래밍이 필요한 부분이므로 직접 작성할 계획이 아니시라면 전체키 스크립트를 찾아보시기 바랍니다.
  • ?
    A구몽 2016.04.15 17:30
    네... 뭔가 어렵군요.
  • ?
    A구몽 2016.04.15 17:45
    루비자체에서 지원하는 라이브러리 메소드는 없나요?
    키의 입력 상태로 진릿값을 반환해준다거나...
  • profile
    러닝은빛 2016.04.16 20:56
    루비는 윈도우에 의존성이 있는 것이 아니기 때문에 키보드 함수 같은 것은 없습니다. 라이브러리 쪽은 있을 수 있겠으나, 알만툴에 포함되어있는 루비는 개발사에서 수정한 거라 라이브러리를 사용할 수 없게 해놨습니다. 루비에는 좋은 라이브러리가 많지만 사용할 수 없기 때문에 전체키 스크립트 같은게 만들어진 것입니다.
  • ?
    A구몽 2016.04.17 13:16
    아... 이런...
    답변 감사합니다.
  • profile
    gcyong 2017.08.28 02:36
    여담이지만 GetAsyncKeyState함수는 MSB를 조사하셔야 합니다. 러닝은빛님께서 올려주신 링크에 리턴값에 대해 자세히 설명되어있습니다.
    그리고 당연하지만 키가 눌릴 때 까지 반환하지 않는 함수가 아닙니다. 반복문으로 원하는 키가 눌릴 때 까지 조사하셔야 합니다. 따라서 본 게임 제어를 흐릴 수 있으므로 키를 따로 받기 위해서는 CreateThread(https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms682453(v=vs.85).aspx)와 같은 함수도 필요할겁니다. 키를 따로 받는 스레드와 게임쪽 스레드를 유지한 상태에서 키가 눌렸을 때 적절한 처리를 해야합니다.
  • profile
    gcyong 2017.08.28 02:38
    참고로, Win32App으로 작성하시면 굳이 GetAsyncKeyState 함수가 아니라도 윈도우 메시지로 가상 키 코드를 받을 수 있습니다. 윈도우가 직접 WndProc 콜백함수로 보내주거든요. 다만, 콘솔이나 RPG만들기처럼 이런 콜백함수를 따로 정의할 수 없을 때는 GetKeyState함수나 GetAsyncKeyState 함수를 사용합니다. (아주 예전에 듣기로는 GetKeyState보다 Async를 쓰라고 한 것 같습니다만 정확하지는 않습니다.)

List of Articles
No. Category Subject Author Date Views Votes
Notice Beginner Classroom 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7642 1
192 Beginner Classroom [야매 알만툴 MV 강좌] - 연출과 기능. 두마리 토끼를 동시에. 케이디 2018.09.10 2634 0
191 Beginner Classroom RPG Maker MV에서 도트 느낌의 폰트 사용하기 1 file 러닝은빛 2018.07.15 4823 1
190 Beginner Classroom [ MV ] 1-1 " RPG MAKER MV에 대하여 알아보자! " file 수성의물 2018.07.01 1769 0
189 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.3 이용규약 file 이니군 2018.04.25 748 0
188 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.2 이벤트 타입과 메뉴 바 컨텐츠 file 이니군 2018.04.25 802 0
187 Beginner Classroom [DLC 매뉴얼] GENE 도움말 한글화 Part.1 씬 빌더의 개요와 씬빌더 시작하기 1 file 이니군 2018.04.24 2125 1
186 Beginner Classroom 느무느무 쉬운 XAS강좌!(VXA용)1.다운로드 및 규정. file 약빨은ㄱㅏㅅㅣ 2017.11.28 1496 0
185 Beginner Classroom 저 같은 사람 생기지 말라고 만드는 XAS(액션알피지[액알])강 좌!(VX ACE용) 약빨은ㄱㅏㅅㅣ 2017.11.28 1352 0
184 Beginner Classroom [MV] Iavra Splash Video(스플래시/인트로영상 제작 시 스킵기능 부여 플러그인) file 이니군 2017.09.11 1184 0
183 Beginner Classroom RPG MAKER MV Tool Program-MADO 설치 및 적용기 1 file 이니군 2017.09.08 2331 0
182 Beginner Classroom 커먼이벤트로 은행시스템 만들기(23:00 그림 링크 재수정) 3 file 이니군 2017.08.28 1601 0
181 Advanced Classroom [RMMV] 크로노 엔진(Chrono Engine) 플러그인 사용법 1 러닝은빛 2017.07.16 3752 2
180 Intermediate Classroom 네코플에서 VXA 선택지 잘리는 버그 해결하는법 file 심심치 2017.06.22 1037 2
179 Beginner Classroom 변수를 이용한 식물 재배 3 file MoonJ 2017.05.28 3262 2
178 Beginner Classroom 누구나 쉽게 따라할 수 있는 액션/슈팅 이벤트 만들기! 4 file 이제리아 2017.01.26 4339 2
177 Intermediate Classroom RPG란 무엇인가?가 하는 강의-1편:대쉬 속도와 걷는 속도를 어떻게 바꾸는가?- 3 file RPG란무엇인가? 2016.10.31 2302 0
176 Intermediate Classroom 쯔꾸르 게임을 네코플레이어에 최적화 시켜보자! # 해상도 편 22 file 양갱님 2016.04.17 36101 10
175 Beginner Classroom 게임의 퀼리티를 높이자! 3편-맵배치 2 ifeve 2016.04.08 5180 2
» Beginner Classroom Input 객체의 키코드 확장 8 file 러닝은빛 2016.04.05 1385 0
173 Beginner Classroom 초보가쓰는 초보용 Rpg게임 만들기 (xp) 6 Marine 2016.03.13 6309 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10


[privacy statements] | [Terms of Use] | [Contact us] | [Sponsorship] | [Indiside History]

Copyright © 1999 - 2016 INdiSide.com/CL3D Co., Ltd. All Rights Reserved.
Owner : Chunmu(Jiseon Lee) | kernys(Wonbae Kim) | Sasinji(Byungkook Kim)