отвечая на мой собственный вопрос
сначала я переверну свой угол по вертикали, потому что он должен быть обратным. перейти к источнику
180-angle
, затем я должен преобразовать (угол обзора) и (угол между 2 игроками) в 0-360. перейти к источнику
(angle + 360) % 360
, тогда мне нужно проверить угол между двумя другими углами. перейти к источнику
var isbetween = (startangle,midangle,endangle) => {
endangle = (endangle- startangle) < 0 ? endangle - startangle + 360 : endangle - startangle;
midangle = (midangle - startangle) < 0 ? midangle - startangle + 360 : midangle- startangle;
return (midangle < endangle);
}
и применить к моему коду
if(Math.sqrt(Math.pow((this.X-Victim.X),2),Math.pow((this.Y-Victim.Y),2)) <= 100){
var angle = Math.atan2(this.X - Victim.X , this.Y - Victim.Y) * (180 / Math.PI);
var flippedangle = 180 - angle;
var fixedangle = (flippedangle + 360) % 360;
var fixedlook = (this.LookAngle + 360) % 360;
if(((fixedangle - (fixedlook + 80)) < 0 ? fixedangle - (fixedlook + 80) + 360 : fixedangle - (fixedlook + 80)) > (((fixedlook - 80) - (fixedlook + 80)) < 0 ? (fixedlook - 80) - (fixedlook + 80) + 360 : (fixedlook - 80) - (fixedlook + 80))){
socket.emit('HitTo',{UserName:Victim.UserName,hitval:20});
}
}
Спасибо
Или, если это не помогаетОдин из ответов из Переполнения стека, найденный поиском «проверки javascript, если два угла близки», должен дать вам достаточно полезной информации для ее решения. - Эндрю Мортон
, если вы хотите увидеть игру, вот ссылка на нее.