Делаю игру, а точнее NPC. Есть вот такой код на зрение нпс. На игрока работает,но надо сделать чтобы они ещё не видели сквозь объекты на карте
вот код
async function gv(){
for(let guardian of villian){
//let guardian = guardi.filter(g => g.x > agent.x && agent.y <= g.y - 50)[0]
var b = agent.y - guardian.y;
var c = Math.sqrt(b*b );
var z = agent.x - guardian.x;
var s = Math.sqrt(z*z);
if(guardian.dead ) continue
if(c > 100) {
guardian.alert = false
guardian.stand = false
continue
}
if(guardian.alarm && guardian.alert)
{
GuardAttack(guardian)
continue
}
if ((guardian.side == "left") && (guardian.x < agent.x && c < 100))
{
let obj = coll.filter(object => Math.sqrt(guardian.y - object.y*guardian.y - object.y) < 100)[0]
console.log(obj,agent.x )
if(typeof obj != "undefined"&& agent.x > obj.x){
console.log("Гнилосос " + guardian.msg)
return //console.log("спрятался")
}
else {
let as = document.getElementById("alertSound")
as.play()
guardian.stand = true
guardian.alert = true
guardian.alarm = true
guardian.image.src = "guard.png"
}
}
else if ((guardian.side == "right") && (guardian.x > agent.x && c < 100))
{
let obj = coll.filter(object => ( Math.sqrt(guardian.y - object.y*guardian.y - object.y) < 100))[0]
if(typeof obj != "undefined"&& agent.x < obj.x){
console.log("Гнилосос " + guardian.msg)
continue //console.log("спрятался")og("спрятался")
}
else {
let as = document.getElementById("alertSound")
as.play()
guardian.image.src = "guardside.png"
guardian.stand = true
guardian.alarm = true
guardian.alert = true
}}}}
Где:
Coll (от слова collision) Все объекты, сквозь которые нпс не должны видеть
villians (массив с нпс)
agent (игрок)
так вот, цель сделать чтобы нпс видел объект также как и игрока, и проверял. Надо подобрать условие для фильтра. есть идеи??
let obj = coll.filter(object => ( Math.sqrt(guardian.y - object.y*guardian.y - object.y) < 100))[0]
есть идеи??