private void StepAvoidingWalls(MobDirection direction) { if (CanStep(direction, speed)) { float angle = MobDirectionToAngle(direction); StepAngle(angle, speed); } else { TurnRandomDirection(); } }
private bool CanStep(MobDirection direction, int distance) { float angle = MobDirectionToAngle(direction); StepAngle(angle, distance); bool ranIntoWall = false; List<GameObject> solids = ObjectHolder.Objects.Where(obj => obj is SolidObject || obj is MovingObject).ToList(); foreach (var solid in solids) { if (this.IsRectangleColliding(solid)) { ranIntoWall = true; break; } } StepAngle(angle, -distance); return !ranIntoWall; }
public static float MobDirectionToAngle(MobDirection direction) { if (direction == MobDirection.Left) { return Directions.Left; } else if (direction == MobDirection.Right) { return Directions.Right; } else if (direction == MobDirection.Up) { return Directions.Up; } else if (direction == MobDirection.Down) { return Directions.Down; } return 0; }
private bool CanStep(MobDirection direction, int distance) { float angle = MobDirectionToAngle(direction); StepAngle(angle, distance); bool ranIntoWall = false; List <GameObject> solids = ObjectHolder.Objects.Where(obj => obj is SolidObject || obj is MovingObject).ToList(); foreach (var solid in solids) { if (this.IsRectangleColliding(solid)) { ranIntoWall = true; break; } } StepAngle(angle, -distance); return(!ranIntoWall); }
public Mob() { Direction = MobDirection.South; }
public PlayerLegs(Vector2 position, MobDirection direction) : base(position, direction) { }
protected void ChangeDirectionAndImage(MobDirection direction) { Direction = direction; Sprite.Rotation = MobDirectionToAngle(direction); }
public Mob(Vector2 position, MobDirection direction) : base(position) { ChangeDirectionAndImage(direction); Sprite.Origin = new Vector2(Sprite.Image.Width / 2, Sprite.Image.Height / 2); }
public Mob(Vector2 position) : base(position) { Direction = MobDirection.Up; Sprite.Origin = new Vector2(Sprite.Image.Width / 2, Sprite.Image.Height / 2); }
private void TurnRandomDirection() { MobDirection direction = (MobDirection)Randomizer.Rnd.Next(0, 5); ChangeDirectionAndImage(direction); }