Ejemplo n.º 1
0
 public void destructableTerrainCollision(DestructableTerrain terrain)
 {
     if (terrain.getCollidingPixal(position, (int)width / 2).Count > 1)
     {
         terrain.damage(position, 7, GameLibrary.Global.Graphics.airColor);
         alive = false;
     }
 }
Ejemplo n.º 2
0
        public void destructableTerrainCollision(DestructableTerrain terrain)
        {
            List <Vector2> collisions = terrain.getVectorCollisions(position, (int)radius);

            if (collisions.Count < 10)
            {
                return;
            }

            for (int i = 0; i < collisions.Count; i++)
            {
                float distance = Vector2.Distance(collisions[i], position);

                if (distance < radius)
                {
                    float   difference = radius - distance;
                    Vector2 relative   = collisions[i] - position;
                    float   perc       = 1 - difference / radius;
                    Vector2 correct    = new Vector2(relative.X * perc, relative.Y * perc);
                    position -= correct;
                }
            }
        }