Comment on page
📇

오브젝트 npcProperty

npcProperty는Map.putObjectWithKey(x, y, dynamicResource, option)함수의
option 파라미터에서 지정할 수 있으며, 다음 7가지 속성을 지정할 수 있습니다.
이름
타입
설명
name
string
오브젝트 위에 표시될 이름
hp
number
오브젝트의 현재 체력
hpMax
number
오브젝트의 최대 체력
gaugeWidth
number
체력 게이지바의 너비
생략시 이미지의 너비 크기로 설정됩니다.
hpColor
number
체력 게이지바의 색상 ex) 0x03ff03 (초록색)
예제 1 - npcProperty를 사용해 오브젝트 생성하기
npcProperty.zip
29KB
Binary
예제 파일
let blueman = App.loadSpritesheet('blueman.png', 48, 64, {
left: [5, 6, 7, 8, 9],
up: [15, 16, 17, 18, 19],
down: [0, 1, 2, 3, 4],
right: [10, 11, 12, 13, 14],
dance: [20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],
down_jump: [38],
left_jump: [39],
right_jump: [40],
up_jump: [41],
}, 8);
App.addOnKeyDown(81, function (player) {
const objectKey = "TestBlueMan";
const bluemanObject = Map.putObjectWithKey(18, 6, blueman, {
npcProperty: { name: "BlueMan", hpColor: 0x03ff03, hp: 100, hpMax: 100 },
overlap: true,
movespeed: 100,
key: objectKey,
useDirAnim: true,
offsetX: -8,
offsetY: -32,
});
Map.playObjectAnimationWithKey(objectKey, "down", -1);
});
예제 2 - npcProperty로 체력이 깎이는 효과 구현하기
npcProperty2.zip
29KB
Binary
예제 파일
let blueman = App.loadSpritesheet('blueman.png', 48, 64, {
left: [5, 6, 7, 8, 9], // 좌방향 이동 이미지
up: [15, 16, 17, 18, 19],
down: [0, 1, 2, 3, 4],
right: [10, 11, 12, 13, 14],
dance: [20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],
down_jump: [38],
left_jump: [39],
right_jump: [40],
up_jump: [41],
}, 8);
App.addOnKeyDown(81, function (player) {
const objectKey = "TestBlueMan";
const bluemanObject = Map.putObjectWithKey(18, 6, blueman, {
npcProperty: { name: "BlueMan", hpColor: 0x03ff03, hp: 100, hpMax: 100 },
overlap: true,
collide: true, // ★ collid: true
movespeed: 100,
key: objectKey,
useDirAnim: true,
offsetX: -8,
offsetY: -32,
});
Map.playObjectAnimationWithKey(objectKey, "down", -1);
});
App.onAppObjectAttacked.Add(function (p, x, y, layer, key) {
const targetObject = Map.getObjectWithKey(key);
targetObject.npcProperty.hp -= 10;
if(targetObject.npcProperty.hp > 0) {
const hpPercentage = targetObject.npcProperty.hp / targetObject.npcProperty.hpMax;
if (hpPercentage < 0.3) {
targetObject.npcProperty.hpColor = 0xff0000;
} else if (hpPercentage < 0.7) {
targetObject.npcProperty.hpColor = 0xffa500;
}
targetObject.sendUpdated();
} else {
Map.putObjectWithKey(targetObject.tileX, targetObject.tileY, null, { key: key })
}
});