В настоящее время у меня есть движение моего врага, где они начинают двигаться к врагу, но я хочу изменить это, чтобы двигаться только к игроку, если игрок попадает на определенное расстояние врага, поэтому я буду нужно создать какой-то код для работы там, где находится враг, и если они находятся в пределах 175 пикселей, враг начнет двигаться. Я не уверен, как реализовать это в коде, который у меня уже есть.Расстояние обнаружения врагов
Это код моего вражеского класса для передвижения: он использует триггер для вычисления кратчайшего расстояния до врага, а затем подталкивает вражеский объект к игроку. Как только произошло столкновение, игрок удаляется.
class Enemy : Obj
{
float spd = 1;
float detectionDistance = 175;
public Enemy(Vector2 pos)
: base(pos)
{
position = pos;
spriteName = "BlackBall";
speed = spd;
}
public override void Update()
{
rotation = point_direction(position.X, position.Y, Player.player.position.X, Player.player.position.Y);
speed = spd;
base.Update();
}
public override void pushTo(float pix, float dir)
{
float newX = (float)Math.Cos(MathHelper.ToRadians(dir));
float newY = (float)Math.Sin(MathHelper.ToRadians(dir));
newX *= pix;
newY *= pix;
if (!Collision(new Vector2(newX, newY), new Player(Vector2.Zero)))
{
base.pushTo(pix, dir);
}
}
//Uses Trig to calculate the shortest distance to the player then moves towards that position
private float point_direction(float x, float y, float x2, float y2)
{
float diffx = x - x2;
float diffy = y - y2;
float adj = diffx;
float opp = diffy;
float tan = opp/adj;
float res = MathHelper.ToDegrees((float)Math.Atan2(opp, adj));
res = (res - 180) % 360;
if (res < 0) { res += 360; }
return res;
}
немного больше контекста для вашего ответа было бы хорошо. Нужно ли мне заменять строку, добавить ли это в строку I? что мне делать с этим –
Я не могу дать вам больше контекста, не видя остальной код. Вам нужно проверить, не превышает ли расстояние меньше 175 (чтобы следовать вашему примеру), и если да, переместите противника, если нет, не перемещайте противника. Не совсем уверен, что вопрос должен быть честным. – BruceDoh
Я отредактировал свой ответ, чтобы показать вам свой вражеский класс и весь его код. Я ищу, чтобы переместить врага в сторону игры, только если игрок находится в пределах 175 пикселей от врага. –