Я ищу некоторую помощь с кодом игры, который я унаследовал от полета sim. Приведенный ниже код имитирует взрывы бомб на земле, он отлично работает, но я пытаюсь его доработать.Наведение точек по прямой линии из случайной стартовой позиции
В настоящее время он принимает случайное значение для x и y в качестве начальной точки, а затем добавляет к этому случайное значение от -20 до 20. Он работает нормально, но не имитирует бомбы, падающие очень хорошо, поскольку рисунок не лежит вдоль прямой линии/
То, что я хотел бы достичь, но все х и у точек после первых случайных значений, прямую линию, так что эффекты, вызываемые для всех, кажутся лежащими в линии. Не имеет значения, в каком направлении линия ориентирована.
Спасибо за любую помощь
башмака
public static class BombUnit extends CandCGeneric
{
public boolean danger()
{
Point3d point3d = new Point3d();
pos.getAbs(point3d);
Vector3d vector3d = new Vector3d();
Random random = new Random();
Aircraft aircraft = War.GetNearestEnemyAircraft(this, 10000F, 9);
if(counter > 10)
{
counter = 0;
startpoint.set(point3d.x + (double)(random.nextInt(1000) - 500), point3d.y + (double)(random.nextInt(1000) - 500), point3d.z);
}
if(aircraft != null && (aircraft instanceof TypeBomber) && aircraft.getArmy() != myArmy)
{
World.MaxVisualDistance = 50000F;
counter++;
String s = "weapon.bomb_std";
startpoint.x += random.nextInt(40) - 20;
startpoint.y += random.nextInt(40) - 20;
Explosions.generate(this, startpoint, 7F, 0, 30F, !Mission.isNet());
startpoint.z = World.land().HQ(startpoint.x, startpoint.y);
MsgExplosion.send(this, s, startpoint, getOwner(), 0.0F, 7F, 0, 30F);
Engine.land();
int i = Landscape.getPixelMapT(Engine.land().WORLD2PIXX(startpoint.x), Engine.land().WORLD2PIXY(startpoint.y));
if(firecounter < 100 && i >= 16 && i < 20)
{
Eff3DActor.New(null, null, new Loc(startpoint.x, startpoint.y, startpoint.z + 5D, 0.0F, 90F, 0.0F), 1.0F, "Effects/Smokes/CityFire3.eff", 300F);
firecounter++;
}
super.setTimer(15);
}
return true;
}
private static Point3d startpoint = new Point3d();
private int counter;
private int firecounter;
public BombUnit()
{
counter = 11;
firecounter = 0;
Timer1 = Timer2 = 0.05F;
}
}
ritrattThanks для вашего пост – slipper23
первый взрыв должен быть случайным, а остальная часть серии должна следовать по прямой линии (любое направление) от первый. Это то, что делает ваш код? – slipper23
отправил изображение в первом сообщении – slipper23