hoe maak ik mijn collide functie effectiever?

Status
Niet open voor verdere reacties.

spider0007

Nieuwe gebruiker
Lid geworden
5 aug 2012
Berichten
1
Ik heb een (basis) space invaders gemaakt, maar de functie die wordt aangeroepen wanneer de kogels de gebruiker/computer raken is niet echt volledig.
(dus wanneer er wordt gecheckt of iemand geraakt is om zo de winnaar aan te duiden)

Code:
private bool Collides(Sprite one, Sprite two)
        {
            if (one == null || two == null)
            {
                return false;
            }
            else if
            (
                two.X < one.X
                && (two.X + two.Width) > (one.X + one.Width)
                && two.Y < one.Y
                && (two.Y + two.Height) > (one.Y + one.Height)
            )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
de two en one zijn (enemykogel-gebruiker) of (gebruikerkogel-enemy).

Ik zoek dus een beetje een meer functionerende code die makkelijker is.
Er wordt nu niet "true" weergegeven wanneer ze elkaar duidelijk raken.

Kan iemand helpen?

Bedankt,
spider
 
Misschien iets simpels zoals dit om te beginnen?

Code:
public class Sprite
{
	public Point Location { get; set; }
	public Size Size { get; set; }
	
	public Sprite(int x, int y, int width, int height)
	{
		Location = new Point(x, y);
		Size = new Size(width, height);
	}

	public bool CollidesWith(Sprite other)
	{
		Rectangle thisRectangle = new Rectangle(this.Location, this.Size);
		Rectangle otherRectangle = new Rectangle(other.Location, other.Size);
		
		return thisRectangle.IntersectsWith(otherRectangle);
	}
}


Code:
Sprite bullet = new Sprite(0, 0, 1, 2);
Sprite enemyShip = new Sprite(10, 5, 2, 5);

bool hit = bullet.CollidesWith(enemyShip);
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan