let _players = App.players;
// 플레이어가 스페이스에 입장 했을 때 이벤트
App.onJoinPlayer.Add(function(p) {
p.tag = {
stun : false, // 스턴에 걸림 여부, false
sTime : 2, //스턴 효과 2초로 설정
};
_players = App.players;
});
// 플레이어가 다른 플레이어를 공격혔을 때 (Z키)
App.onUnitAttacked.Add(function(sender, x, y, target) {
if(!target.tag.stun)
{
target.tag.stun = true; // 스턴에 걸림 여부를 true로 변경
target.moveSpeed = 0; // 이동속도를 0으로 변경
target.sendUpdated();
}
});
App.onUpdate.Add(function(dt){
for(let i in _players) {
let p = _players[i];
// 스턴에 걸림 여부가 true 이면
if(p.tag.stun)
{
p.tag.sTime -= dt; //스턴 효과 지속시간이 0이 될 때까지 update마다 dt만큼 빼줌
if(p.tag.sTime <= 0) // 스턴 효과 지속시간이 0 이하가 되면,
{
p.tag.stun = false; // 스턴에 걸림 여부를 false로 변경
p.tag.sTime = 2; // 지속시간 2초로 초기화
p.moveSpeed = 80; // 이동속도 정상화
p.sendUpdated();
}
}
}
});
// 플레이어가 스페이스를 나갔을 때 이벤트
App.onLeavePlayer.Add(function(p) {
p.moveSpeed = 80; // 이동속도 정상화
p.sendUpdated();
_players = App.players;
});
<aside> 🚧 참고
</aside>