Я хочу шаблон, который перемещает моего врага случайным образом, потому что, когда у меня есть 3 или 4 врага, они кажутся тем же вражеским движением. это мой код для случайного:Случайный шаблон врага
int seed = unchecked(System.DateTime.Now.Ticks.GetHashCode());
rand = new Random(seed);
А вот код для процесса хода:
public void move(GameTime time, WorldScreen screen)
{
timer += (float)time.ElapsedGameTime.TotalMilliseconds;
if (timer > 2000)
{
switch (rand.Next(0, 3))
{
case 0:
base.direction = Enemy.Direction.down;
break;
case 1:
base.direction = Enemy.Direction.right;
break;
case 2:
base.direction = Enemy.Direction.left;
break;
case 3:
base.direction = Enemy.Direction.up;
break;
}
timer = 0;
}
timer1 += (float)time.ElapsedGameTime.TotalMilliseconds;
if (timer1 > 50)
{
timer1 = 0;
if (direction == Enemy.Direction.down)
{
if (!MoveCollision(new Vector2(position.X, position.Y + speed), screen))
{
base.position.Y += speed;
ActualAnimation = getAnimation("rundown");
}
else
{
base.direction = Enemy.Direction.right;
}
}
if (direction == Enemy.Direction.up)
{
if (!MoveCollision(new Vector2(position.X, position.Y - speed), screen))
{
base.position.Y -= speed;
ActualAnimation = getAnimation("runup");
}
else
{
base.direction = Enemy.Direction.down;
}
}
if (direction == Enemy.Direction.right)
{
if (!MoveCollision(new Vector2(position.X + speed, position.Y), screen))
{
base.position.X += speed;
ActualAnimation = getAnimation("runright");
}
else
{
base.direction = Enemy.Direction.left;
}
}
if (direction == Enemy.Direction.left)
{
if (!MoveCollision(new Vector2(position.X - speed, position.Y), screen))
{
base.position.X -= speed;
ActualAnimation = getAnimation("runleft");
}
else
{
base.direction = Enemy.Direction.up;
}
}
}
ActualAnimation.update(time, position);
}
но этот код просто сделать тот же шаблон для всех Enemys по комнате. THX за помощь мне в этом.
Где находится строка 'rand = new Random (seed)? – Mephy
Возможно, вам будет полезно изменить 'rand.Next (0, 3)' на 'rand.Next (0, 4)', поскольку второй параметр является ** эксклюзивной ** верхней границей. Другими словами, 'rand.Next (0, 3)' возвращает значения только из '{0, 1, 2}'. – Enigmativity
Можете ли вы попробовать создать экземпляр «new Random()» (без ненужного семенного кода) в качестве поля 'static'? – Enigmativity