키보드·마우스·터치 입력
스크립트에서 키보드·마우스·터치 입력을 받는 방법을 설명합니다. 입력은 this.app.keyboard, this.app.mouse, this.app.touch로 받습니다.
2026-10-29 oasisw.ai에서 새 프로젝트를 Launch해 확인한 바로는, 데스크톱 Chrome에서 this.app.keyboard와 this.app.mouse는 있었고 this.app.touch는 비어 있었습니다(null). 터치 화면이 없는 기기에서는 터치 입력이 없습니다.
키보드·마우스 예제는 같은 날 Launch한 게임에서 같은 코드로 스크립트를 만들어 붙이고, 실제로 키를 누르고 화면을 눌러 확인했습니다(각 1회).
시작하기 전에
- 쓸 입력 장치가 SETTINGS → INPUT에서 켜져 있는지 봅니다(Keyboard, Mouse, Touch, Gamepads). 씬 설정과 에디터 설정
- Launch한 게임 탭에서는 게임 화면을 한 번 눌러야 키 입력이 들어갑니다.
키보드
누르고 있는 동안: isPressed
var SideMove = ow.createScript('sideMove');
SideMove.attributes.add('speed', { type: 'number', default: 3 });
SideMove.prototype.update = function (dt) {
var kb = this.app.keyboard;
var x = 0;
if (kb.isPressed(ow.KEY_LEFT)) x -= 1;
if (kb.isPressed(ow.KEY_RIGHT)) x += 1;
this.entity.translate(x * this.speed * dt, 0, 0);
};
실측에서 오른쪽 방향키를 누르자 엔티티가 +X로 움직였습니다.
누른 순간 한 번: wasPressed
Jump.prototype.update = function (dt) {
if (this.app.keyboard.wasPressed(ow.KEY_SPACE)) {
this.entity.rigidbody.applyImpulse(0, 5, 0);
}
};
실측에서 스페이스 키를 0.12초 누르자 Box(Dynamic Rigid Body)가 한 번 뛰어올라 높이 0.5에서 1.73까지 올라갔습니다. 같은 키를 한 프레임보다 짧게 눌렀다 떼자(자동화 도구로 누름) wasPressed가 받지 못했습니다. 사람이 누르는 길이에서는 받습니다.
키 이름은 ow.KEY_로 시작합니다. 실측에서 ow.KEY_LEFT는 37, ow.KEY_SPACE는 32였습니다. 글자 키는 ow.KEY_A~ow.KEY_Z, 숫자 키는 ow.KEY_0~ow.KEY_9입니다.
마우스
Shoot.prototype.initialize = function () {
this.app.mouse.on(ow.EVENT_MOUSEDOWN, this.onMouseDown, this);
this.on('destroy', function () {
this.app.mouse.off(ow.EVENT_MOUSEDOWN, this.onMouseDown, this);
}, this);
};
Shoot.prototype.onMouseDown = function (event) {
if (event.button === ow.MOUSEBUTTON_LEFT) {
console.log('클릭: ' + event.x + ', ' + event.y);
}
};
실측에서 게임 화면을 누르자 onMouseDown이 불리고 누른 좌표가 들어왔습니다. ow.EVENT_MOUSEDOWN은 'mousedown', ow.MOUSEBUTTON_LEFT는 0이었습니다. 화면 위 버튼을 누르는 일은 마우스 이벤트보다 버튼의 click 이벤트가 편합니다. 버튼은 터치에서도 같은 이벤트를 보냅니다. 작성 대기 휴대폰에서 버튼 click 실측
터치
터치 기기에서는 this.app.touch로 ow.EVENT_TOUCHSTART('touchstart') 등을 받습니다. 데스크톱에서는 this.app.touch가 null이므로, 터치를 쓰는 코드는 먼저 있는지 확인합니다.
if (this.app.touch) {
this.app.touch.on(ow.EVENT_TOUCHSTART, this.onTouch, this);
}
작성 대기 휴대폰에서 터치 입력 실측
AI에게 맡기기
요청문에 키를 정확히 적습니다. 대회용 실측에서 요청문에 적은 키는 매번 지켜졌습니다.
방향키 왼쪽·오른쪽으로 Ball을 좌우로 움직이고, 스페이스 키를 누르면 한 번 점프하게 해 주세요.
휴대폰에서는 화면 왼쪽·오른쪽 절반을 누르면 같은 방향으로 움직이게 해 주세요.
요청한 것 외에는 손대지 마세요.
작성 대기 AI에게 맡기기 실측 — 같은 요청 3회, 휴대폰 포함