Event Listeners
소개
플레이어가 지정된 채팅을 입력하거나, 특정한 오브젝트를 공격할 와 같이 ZEP 스페이스에서 발생하는 특정 상황에 반응하여 동작하는 함수들 입니다.
EventListener가 비정상적으로 많이 추가되는 경우 앱이 종료될 수 있습니다.
onUpdate문 또는 반복적으로 실행되는 문에서 EventListener를 등록하는 것을 지양해주세요.
이름 | 설명 |
---|---|
onSay | 플레이어가 채팅을 입력할 때 동작하는 함수입니다. |
onPlayerTouched | 캐릭터들끼리 충돌할 때 동작하는 함수입니다. |
onObjectTouched | 캐릭터가 오브젝트와 충돌할 때 동작하는 함수입니다. |
onAppObjectTouched | 플레이어가 키 값을 가진 오브젝트와 충돌할 때 동작하는 함수입니다. |
onUnitAttacked | 공격 키(Z)로 다른 캐릭터를 공격할 때 동작하는 함수입니다. |
onObjectAttacked | 공격 키(Z)로 오브젝트를 공격할 때 동작하는 함수입니다. |
onSidebarTouched | 플레이어가 사이드바 앱을 클릭(터치)할 때 실행되는 함수입니다. |
onTriggerObject | 오브젝트와 F 상호작용 시 동작하는 함수입니다. |
onAppObjectAttacked | 플레이어가 키 값을 가진 오브젝트를 공격(Z키) 할 때 동작하는 함수입니다. |
Event Listener 함수 한 눈에 보기
// 플레이어들이 채팅창에 입력하는 모든 채팅에 대해 호출 되는 이벤트
// !로 시작하는 텍스트는 채팅창에 나오지 않으나, onSay 함수에는 사용 가능
App.onSay.Add(function(player, text) {
});
// 플레이어가 다른 플레이어와 부딪혔을 때 호출 되는 이벤트
App.onPlayerTouched.Add(function(sender, target, x, y){
});
// 플레이어가 오브젝트와 부딪혔을 때 호출 되는 이벤트
App.onObjectTouched.Add(function(sender, x, y, tileID, obj) {
});
// 플레이어가 키 값을 가진 오브젝트와 부딪혔을 때 호출 되는 이벤트
App.onAppObjectTouched.Add(function(key, sender, x, y){});
// 플레이어가 다른 플레이어를 공격할 때 (Z키) 호출 되는 이벤트
App.onUnitAttacked.Add(function(sender, x, y, target) {
});
// 플레이어가 오브젝트를 공격(Z키)했을 때 호출 되는 이벤트
App.onObjectAttacked.Add(function(sender, x, y){
});
// 플레이어가 사이드바 앱을 클릭(터치)할 때 호출 되는 이벤트
App.onSidebarTouched.Add(function(player){
});
// 오브젝트와 F 상호작용 시 동작하는 함수
App.onTriggerObject.Add(function(player, layer, x, y){
});
// 플레이어가 키 값을 가진 오브젝트를 공격할 때 (Z키) 호출 되는 이벤트
App.onAppObjectAttacked.Add(function (sender, x, y, layer, key) {
});
App.onSay.Add(function(player, text){});
플레이어가 채팅을 입력할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
player | Player | player 파라미터는 채팅을 입력한 플레이어를 가르킴
player 파라미터의 이름은 임의로 변경 가능 |
text | String | text는 입력한 채팅 내용을 가르킴
text 파라미터의 이름은 임의로 변경 가능 |
예제
초성퀴즈 - 채팅으로 정답 맞추는 기능 만들어보기
_answer = "ZEP" // 정답
// 플레이어가 채팅을 칠 때 실행
App.onSay.add(function(player, text) {
if(_answer == text){
App.showCenterLabel(player.name + '님 정답!\n정답은 ' + _answer);
}
});
App.onPlayerTouched.Add(function(sender, target, x, y){});
캐릭터들끼리 충돌할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 부딪힌 주체자를 가르킴 |
target | String | target은 부딪힘을 당한 플레이어를 가르킴 |
x, y | Number | x, y는 충돌한 x, y 좌표를 가르킴 |
| | sender, target, x, y 파라미터의 이름은 임의로 변경 가능 |
예제
캐릭터끼리 부딪힐 때 메시지 출력해보기
// 플레이어끼리 부딪힐 때 실행
App.onPlayerTouched.Add(function (sender, target, x, y) {
App.showCenterLabel(
`${sender.name}님과 ${target.name}님이 좌표: (${x}, ${y}) 에서 부딪혔습니다.`
);
});
App.onObjectTouched.Add(function(sender, x, y, tileID, obj){});
캐릭터가 오브젝트와 충돌/상호작용할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 오브젝트와 부딪힌 플레이어를 가르킴 |
x, y | Number | 오브젝트와충돌한 x, y 좌표를 가 르킴 |
tileID | Number | 오브젝트의 타일 ID 입니다. |
obj | Object | 오브젝트 객체 |
예제
⭐
overlap: true
속성이 없는 오브젝트는 충돌해도 함수가 실행되지 않습니다.예제_onObjectTouched.zip
2KB
Binary
let testObject = App.loadSpritesheet("object.png");
// 사용 가능한 ObjectEffectType
const ObjectEffectType = {
NONE = 0,
SHOW_NOTE = 1,
SHOW_IMAGE = 2,
PASSWORD_DOOR = 3,
LINK_WEBSITE = 4,
EMBED_WEBSITE = 5,
API_CALL = 6,
REPLACE_IMAGE = 7,
NFT_GIVEAWAY = 8,
NFT_DOOR = 9,
POST_MESSAGE = 10,
SHOW_CHAT_BALLOON = 11,
FT_DOOR = 12,
POST_MESSAGE_TO_APP = 13,
DONATION_DOOR = 14,
IMPASSABLE = 15,
STAMP = 16,
TOKEN_DONATION_DOOR = 17,
CHANGE_OBJECT = 18,
ANIMATION = 19,
NFT_DOOR_MOVE = 20,
INTERACTION_WITH_ZEPSCRIPTS = 21,
MULTIPLE_CHOICE = 22,
}
App.onStart.Add(function () {
Map.putObject(5, 5, testObject, { overlap: true });
});
// 플레이어와 오브젝트가 부딪힐 때 실행
App.onObjectTouched.Add(function (sender, x, y, tileID, obj) {
Map.putObject(x, y, null);
App.showCenterLabel(
`${sender.name}님이 좌표: (${x}, ${y}) 에서 오브젝트와 부딪혔습니다.(타입: ${obj.type})`
);
});
App.onAppObjectTouched.Add(function(sender, key, x, y){});
️ 캐릭터가 키 값을 가진 오브젝트와 충돌할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 오브젝트와 부딪힌 플레이어를 가르킴 |
key | String | 오브젝트의 Key 값 |
x, y | Number | x, y는 충돌한 x, y 좌표를 가르킴 |
예제
라벨 출력 예제
⭐
overlap: true
속성이 없는 오브젝트는 충돌해도 함수가 실행되지 않습니다.예제_onAppObjectTouched.zip
29KB
Binary
let blueman_dance = App.loadSpritesheet(
"blueman.png",
48,
64,
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37],
8
);
// Q를 누르면 동작 하는 함수
App.addOnKeyDown(81, function (player) {
App.sayToAll("키 값을 가진 오브젝트 충돌 테스트");
Map.putObjectWithKey(8, 5, blueman_dance, { overlap: true, key: "blueman" });
});
App.onAppObjectTouched.Add(function (player, key, x, y) {
App.sayToAll(
`${player.name}이 키 값이 ${key}인 오브젝트와 ${x},${y}에서 충돌!`
);
});
App.onUnitAttacked.Add(function(sender, x, y, target){});
플레이어가 공격 키(Z)로 다른 캐릭터를 공격할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 공격한 플레이어를 가르킴 |
x, y | Number | x, y는 공격한 플레이어의 x, y 좌표 값을 가르킴 |
target | Player | target은 공격 받은 플레이어를 가르킴 |
| | sender, x, y, target 파라미터의 이름은 임의로 변경 가능 |
예제
플레이어를 공격 할 때 메시지 출력해보기
// Z 키로 플레이어를 공격할 때 실행
App.onUnitAttacked.Add(function (sender, x, y, target) {
App.showCenterLabel(`${sender.name}님이 ${target.name}님을 공격했습니다.`);
App.sayToAll(`(${x}, ${y})`);
});
App.onObjectAttacked.Add(function(sender, x, y){});
플레이어가 공격 키(Z)로 오브젝트를 공격할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 공격한 플레이어를 가르킴 |
x, y | Number | x, y는 오브젝트의 x, y 좌표 값을 가르킴 |
| | sender, x, y 파라미터의 이름은 임의로 변경 가능 |
예제
오브젝트를 공격할 때 메시지 출력해보기
⭐
overlap: true
속성이 없는 오브젝트는 공격해도 함수가 실행되지 않습니다.예제_onObjectAttacked.zip
2KB
Binary
let testObject = App.loadSpritesheet("object.png");
App.onStart.Add(function () {
Map.putObject(5, 5, testObject, { overlap: true });
});
// Z 키로 오브젝트를 공격할 때 실행
App.onObjectAttacked.Add(function(sender, x, y){
App.showCenterLabel(
`${sender.name}님이 좌표: (${x}, ${y})에 위치 오브젝트를 공격했습니다.`
);
})
App.onSidebarTouched.Add(function(player){});
플레이어가 사이드바 앱을 클릭(터치) 할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
player | Player | 사이드바 앱을 클릭한 player를 가르킴 |
예제
사이드바 앱 클릭 시 채팅창 메시지 출력하기.
App.onSidebarTouched.Add(function (player) {
App.sayToAll(`${player.name}님이 사이드바 앱을 클릭했습니다.`)
});
관련 페이지
App.onTriggerObject.Add(function(player, layerID, x, y){});
오브젝트와 F 상호작용 시 동작하는 함수를 작성할 수 있습니다.
맵에디터로 설치한 오브젝트와 상호작용 시 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
player | Player | 오브젝트와 상호작용한 player를 가르킴 |
layerID | Number | 오브젝트가 설치된 레이어 ID
오브젝트인 경우 layerID = 3
상단 오브젝트인 경우 layerID = 5 |
x, y | Number | 상호작용한 오브젝트의 x, y 좌표 |
예제
오브젝트와 F 상호작용시 메시지 출력하기

App.onTriggerObject.Add(function (player, layerID, x, y) {
App.sayToAll(`playerName: ${player.name} / layer: ${layerID} / coordinates:(${x}, ${y})`);
});
App.onAppObjectAttacked.Add(function (sender, x, y, layer, key) {});
플레이어가 공격 키(Z)로 키 값을 가진 오브젝트를 공격할 때 동작합니다.
파라미터
이름 | 타입 | 설명 |
---|---|---|
sender | Player | sender는 공격한 플레이어를 가르킴 |
x, y | Number | x, y는 오브젝트의 x, y 좌표 값을 가르킴 |
layer | Number | 오브젝트가 설치된 레이어 |
key | String | 공격한 오브젝트의 키 값 |
예제
키 값을 가진 오브젝트를 공격할 때 메시지 출력해보기

onAppObjectAttacked.zip
29KB
Binary
⭐
collide: true
속성이 없는 키 값 오브젝트는 공격해도 함수가 실행되지 않습니다.App.onAppObjectAttacked.Add(function (sender, x, y, layer, key) {
App.showCenterLabel(
`sender: ${sender.name}
coordinates: (${x}, ${y})
layer: ${layer}
key: ${key}`
);
});
관련 페이지
Last modified 1mo ago