public Player(ScreenManager screenManager, string propName, Vector2 pos, World world, int columns, int rows, Level sourceLevel) : base(screenManager, propName, new Vector2(0.75f, 0.25f), new Vector2(0.75f, 0.75f), columns, rows, sourceLevel) { _x = 0; _y = 0; _baseVelocity = 0.05f; Health = 100; ObjectBody = world.CreateCapsule(_objectBodySize.X, 0.25f, 10, _objectBodySize.Y, 10, 1f, pos); ObjectBody.BodyType = BodyType.Dynamic; ObjectBody.SetRestitution(0f); ObjectBody.Mass = 2f; ObjectBody.FixedRotation = true; ObjectBody.SetFriction(1.0f); ObjectBody.OnSeparation += Seperation; ObjectBody.Tag = "Player"; AnimationTimeSpans = new Dictionary <CreatureState, TimeSpan>(); AnimationTimeSpans[CreatureState.Moving] = TimeSpan.FromMilliseconds(200); foreach (var fixture1 in ObjectBody.FixtureList) { fixture1.Tag = "Player"; } ObjectBody.SetCollisionCategories((Category)(Category.All - Category.Cat1)); //create bottom rectangle for floor detection Vertices vertices = PolygonTools.CreateRectangle(0.1f, 0.1f); vertices.Translate(new Vector2(0f, -0.4f)); Shape rectangle = new PolygonShape(vertices, 1f); Fixture fixture = ObjectBody.CreateFixture(rectangle); fixture.Tag = "AirDetectorBottom"; fixture.IsSensor = true; fixture.OnSeparation = fixtureSeperated; fixture.OnCollision += Colided; //set sound effect // PlayerBody.CreateRectangle(0.2f, 0.2f, 1f, new Vector2(0f, -0.8f)).IsSensor = true; _inAir = true; _isMoving = false; _playerMovingForce = new Vector2(0, 0); }
public Ground(ScreenManager screenManager, string propName, Vector2 pos, World world, int columns, int rows, List <List <char> > level, Int32 i, Int32 j, Level sourceLevel) : base(screenManager, propName, new Vector2(1f, 1f), new Vector2(1f, 1f), columns, rows, sourceLevel) { ObjectBody = world.CreateRectangle(_objectBodySize.X, _objectBodySize.Y, 1f, pos); ObjectBody.BodyType = BodyType.Static; ObjectBody.SetRestitution(0f); ObjectBody.SetFriction(0.5f); if (j == 0) { _currColumn = 0; } else if (level[i][j - 1] == '.') { if (j != level[i].Count - 1) { if (level[i][j + 1] == '.') { _currColumn = 1; } } else { _currColumn = 0; } } else if (j == level[i].Count - 1) { _currColumn = 2; } else if (level[i][j + 1] == '.') { _currColumn = 2; } else { _currColumn = 1; } if (rows > 1) { _currColumn = j; _currRow = i; } }
public Enemy(ScreenManager screenManager, Player player, string propName, Vector2 pos, World world, Vector2 objectBodySize, Vector2 objectTextureMetersSize, int columns, int rows, Level sourceLevel) : base(screenManager, propName, objectBodySize, objectTextureMetersSize, columns, rows, sourceLevel) { ObjectBody = world.CreateCapsule(_objectBodySize.X, _objectBodySize.Y / 3f, 10, _objectBodySize.Y / 3f, 10, 1f, pos); ObjectBody.BodyType = BodyType.Dynamic; ObjectBody.SetRestitution(0f); ObjectBody.Mass = 2f; ObjectBody.FixedRotation = true; ObjectBody.SetFriction(0.5f); ObjectBody.Tag = "Enemy"; Health = 100; _playerSeen = false; _gotHit = false; _canShoot = true; _player = player; _timeSinceLastMissile = TimeSpan.Zero; _orientation = (Orientation)RandomNumberGenerator.GetInt32(2); if (_orientation == Orientation.Left) { _creatureEffect = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically; } _leftCone = createVision(Orientation.Left); _rightCone = createVision(Orientation.Right); foreach (var fixture in ObjectBody.FixtureList) { if (!"DetectionCone".Equals(fixture.Tag)) { fixture.Tag = "Enemy"; } } _healthBarColor = Color.Green; makeHealthBar(); ObjectBody.OnCollision += OnCollision; }