Zdravím, dělám hru v C#, konkrétně Arkanoid. Při kolizi míčku s cihlou zavolám metodu, která řeší kam se má míček odrazit. Směry mám vyřešené, včetně hrany, ale nemůžu přijít na to, jak udělat, aby když splním jednu podmínku (tj. změním směr), aby se nesplnili už ostatní podmínky a "vyjel" z té metody. Protože když zmením třebas rychlost z (-x, -y) na (-x, -y), tak se mi splníTady přikládám tu metodu, v které jsou řešeny odrazy. Předem děkuji za radu, jak tento problém vyřešit.
public void OdrazMickuCihla(Sprite micek, Vector2 CihlaStretnuti)
{
if (micek.Rychlost.X < 0 && micek.Rychlost.Y < 0) //micek leti (-x;-y)
{
if (CihlaStretnuti.X < 37 && CihlaStretnuti.X > -21) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
else if (CihlaStretnuti.X >= 37) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
}
else if (micek.Rychlost.X < 0 && micek.Rychlost.Y > 0) //micek leti (-x;y)
{
if (CihlaStretnuti.X >= 37 ) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X < 37) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}
else if (micek.Rychlost.X > 0 && micek.Rychlost.Y < 0) //micek leti (x;-y)
{
if (CihlaStretnuti.X <= -17) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X > -17) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}
else if (micek.Rychlost.X > 0 && micek.Rychlost.Y > 0) //micek leti (x;y)
{
if (CihlaStretnuti.X <= -17) //micek nalitne na hranu cihly
micek.Rychlost = new Vector2(-micek.Rychlost.X, micek.Rychlost.Y);
else if (CihlaStretnuti.X > -17) //micek nalitne na strechu cihly
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}
else if (micek.Rychlost.X == 0) //micek leti kolmo
{
micek.Rychlost = new Vector2(micek.Rychlost.X, -micek.Rychlost.Y);
}
}