Задать вопрос
@Anonymous_toaster

Js игра. Поиск элемента в массиве, как подобрать условие?

Делаю игру, а точнее 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]
есть идеи??
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Средний 7 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы