Chyba jinde zřejmě není, když odstraním ten jeden směr, který mi to hned zpátky změní, tak se to odrazí v pořádku... jakmile ho tam vrátím, i když je else-if, tak proběhne a změní mi to zpátky na mínusovou Rychlost.Y a pokračuje to dál v místě bez odrazu. :(
Příspěvky odeslané z IP adresy 86.49.75.–
return mi bohužel nepomohl
nemůžu EDITovat, tak doplňuji větu...
...Protože když zmením třebas rychlost z (-x, -y) na (-x, -y), tak se mi splní podmínka, která slouží pro rychlost (-x,-y) a znova změní směr rychlosti.
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);
}
}
Díky za pomoc, vyřešeno :)
funkce Contains mi dělá to samé, udělá mi to pouze jeden výskyt daného charu, ostatní už ne :(
Bohužel tu funkci nemůžu stále najít, zatím to mám takhle
string path = Path.Combine(StorageContainer.TitleLocation, "sometext.txt");
StreamReader sr = new StreamReader(path);
string retezec = sr.ReadLine();
int Xodsazeni = 0;
if (retezec.IndexOf("o") != -1)
{
Cihlicky b = new Cihlicky(new Vector2(40, 20), new Vector2(20 + 45 * Xodsazeni, 30), new Vector2(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), new Vector2(4, 4), Content.Load<Texture2D>("cihla"));
cihla.Add(b);
Xodsazeni++;
}
každopádně mi to vypíše jednou, jakože tam je pouze jeden char 'o', přičemž tam jsou 4...
Zdravím, mám řetězec string, například
string retezec "ddmmdXmmDDmXmDDmD";
A potřebuji prohledat znak po znaku ten řetězec, akorát s tím problémem, že potřebuju:
když narazím na char 'd', tak se mi přičte integer p++;
když narazím na char 'X', tak se mi odečte integer l--;
a podobně...
Předem děkuji za radu, jakej příkaz použít. IndexOf mi vyjede pouze první pozici toho charu, ale to je mi tady k ničemu. Nevím jakej příkaz jinej použít.