Я искал по всему и не мог найти ответ на этот, казалось бы, общий вопрос, на удивление. Проблема, с которой я сейчас сталкиваюсь, - это проверка того, сталкивается ли игрок с противником, тогда, если это так, в каком диапазоне просмотра игроков (настраивается), и если он находится в этом диапазоне, то уходите в ближайшем безопасном направлении.Проверьте, нет ли двух объектов друг другу.
Вот картинка: D
Итак, как бы я это сделать? У меня есть x
, y
и direction
, каждого объекта корабля. Это моя последняя неудачная попытка, пытаясь считать, что направление игрока будет ровно на 180 градусов от направления противника относительно игрока.
var direction=Math.direction(this.x,this.y,player.x,player.y,1),
playerview=Math.abs(direction)-Math.abs(player.direction-180)
if(Math.abs(playerview)<10) {
console.log('in view')
this.xVelocity+=AI.speed*Math.sin(playerview*Math.PI/180)
this.xVelocity+=AI.speed*Math.cos(playerview*Math.PI/180)
}
В этом примере 10
бы диапазон. Конечно, мне удалось заставить корабли вращаться вправо, поэтому, кроме обнаружения, работающего только на половине круга, я не могу заставить врага пойти в правую сторону. Есть идеи?
Спасибо, копирование xVelocity была посредственной ошибкой ^^; однако проблема не в движении корабля, он получает правильное обнаружение. Я уверен, что Math.direction работает так, как я использовал его для всего остального. Я сам добавил свой прототип; Я знаю, что это не стандарт. И, из сонного состояния, я сказал, что хочу плохо.То, что я хочу, это проверить, стоит ли игроку противостоять врагу, учитывая небольшой диапазон, как показано на рисунке выше. Вы знаете, как я этого достиг? Или добавили бы еще 180 работы, учитывая эту дополнительную меру, чтобы сохранить угол в пределах 360? – Ruffy
Я редактирую ответ, чтобы набросать решение. – Black