Ejemplo n.º 1
0
        public Asteroid(State state, Vector2 position, int? typeOverride = null, bool isStatic = false)
            : base(state)
        {
            var type = typeOverride.HasValue ? typeOverride.Value : Program.Random.Next(Radiuses.Count);
            var radius = Radiuses[type];

            _sprite = new Sprite(Assets.LoadTexture(string.Format("asteroid{0}.png", type))).Center();

            var c = (byte)Program.Random.Next(180, 255);
            _sprite.Color = new Color(c, c, c);

            #region Body Initialize
            Body = new Body(State.World);
            Body.BodyType = BodyType.Dynamic;
            Body.LinearDamping = 0.5f;
            Body.AngularDamping = 0.5f;
            var shape = new FarseerPhysics.Collision.Shapes.CircleShape(radius, 20 * radius);
            Body.CreateFixture(shape);

            Body.UserData = this;

            if (isStatic)
                Body.BodyType = BodyType.Static;

            Body.Position = position;
            Body.Rotation = (float)(Program.Random.NextDouble() * (Math.PI * 2));
            #endregion
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Add a circle collision shape to the body.
 /// </summary>
 /// <param name="radius">Radius of the circle in body space.</param>
 /// <param name="center">Center of the circle in body space.</param>
 /// <param name="density">Density of shape, used to compute mass.</param>
 /// <returns>Fixture definition.</returns>
 public Physics.Dynamics.Fixture AddCollisionCircle(float radius, Vector2 center, float density = 1.0f)
 {
     Physics.Collision.Shapes.CircleShape circle = new Physics.Collision.Shapes.CircleShape(radius * GameEnvironment.k_physicsScale);
     circle.Position = center * GameEnvironment.k_physicsScale;
     return(AddCollisionShape(circle, density));
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Add a circle collision shape to the body.
 /// </summary>
 /// <param name="radius">Radius of the circle in body space.</param>
 /// <param name="center">Center of the circle in body space.</param>
 /// <param name="density">Density of shape, used to compute mass.</param>
 /// <returns>Fixture definition.</returns>
 public Physics.Dynamics.Fixture AddCollisionCircle(float radius, Vector2 center, float density = 1.0f)
 {
     Physics.Collision.Shapes.CircleShape circle = new Physics.Collision.Shapes.CircleShape(radius * GameEnvironment.k_physicsScale);
     circle.Position = center * GameEnvironment.k_physicsScale;
     return AddCollisionShape(circle, density);
 }