public void destructableTerrainCollision(DestructableTerrain terrain) { if (terrain.getCollidingPixal(position, (int)width / 2).Count > 1) { terrain.damage(position, 7, GameLibrary.Global.Graphics.airColor); alive = false; } }
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; } } }