我遇到的问题是,当npc和播放器在5像素之内时,会触发冲突,然后在控制台中显示npc的清单。问题在于,npc库存将仅显示一次。
我想这样做,以便每次播放器位于npc的5像素以内时,都会显示其库存。但是我也不希望当播放器位于npc的5像素以内时,碰撞仅在它们第一次接近时一次触发。
这是我的代码...
// collision for npc and player
function npc2Collision(){
for(var i = 0; i < 1; i++){
game.addEventListener('enterframe', function() {
//detects whether player sprite is within 5
//pixels of the npc sprite
if(player.within(npc2,5) && !npc2.isHit){
console.table(npcInvObject);
npc2.isHit = true;
}
});
}
}
npc2Collision();
最佳答案
为了防止再次触发碰撞,您可以使用由检查设置的简单标志(及其反向标志):
function npc2Collision(){
for(var i = 0; i < 1; i++){
game.addEventListener('enterframe', function() {
//detects whether player sprite is within 5
//pixels of the npc sprite
if(player.within(npc2,5) && !npc2.isHit){
// split the checks so distance works well
if (!player.collided) {
console.table(npcInvObject);
npc2.isHit = true;
player.collided = true;
}
} else {
player.collided = false;
});
}
}
这将运行一次,在播放器上设置
collided
标志,直到播放器离开碰撞半径后才会再次触发。