Permalänk
Medlem

Hjälp med c# spel

Tjenare. jag har lite problem med ett spel vi gör i skolan. Ja har ett spel där men spelar med xbox control och det e pvp med mera.

Grejen e den att jag nu har lagt till en powerup för det var det som saknades för MVG enligt läraen.

Jag har lyckats so far med att få den att funka när man går på den, MEN. Det funkar inte att få av den.
Jag har testat med att i samma if som den när man tar powerupen att boosttimer++; Boosttimer e en int.
Sedan i en annan ifsats boosttimer = 0; boost1 = false;

Men det funkar inte.

Jag har en variabel double called distance. Distance är med hjälp av pythagoras sats avståndet emellan karaktären samt speedboost objektet.

Ifsatsen är
if (distance <= 40)
{
boost1 = true
speedboost.position.X = -100;
speedboost.position.Y = -100;
boosttimer++;
}

Den andra ifsatsen

if (boosttimer >= 300) (5 sekunder)
{
speedboost.position.X = 80;
speedboost.position.Y = 50;
boost1 =false;
boosttimer = 0;
}

Den översta ifsatsen funkar, men inte den andrA. Vet någon varför?

Härär koden ifall någonvill kolla själv. Det mesta ligger i topen utav Update funktionen i klassen "Gameplayscreen"

http://www.mediafire.com/?db3dwlw6uweaaeb

Visa signatur

Corsair Obsidian 250D | i5 7600K | Gigabyte Z270N WiFi | Samsung 960 EVO 250GB | Fractal Design Integra M 650W | Corsair Hydro H90 |Kingston 8GB 2133M DDR4 CL14 | Asus GeForce GTX 970 4GB STRIX DC2 OC MAX |

Permalänk
Medlem

har du testat med debuggern?
du jämför boosttimer med 300, är det säkert att spelloopen går lika fort som tiden, räkna till 300 går väldigt fort på en dator om det inte handlar om tid som man tex hämtar med något tidsobjekt. har ni fast uppdateringsfrekvens, tex 60 bilder/loopar per sekund?

Permalänk
Medlem

Jag vet inte hur man testar med debuggern. Lust att upplysa mig lite?

Vi har inte ändrat fps eller något, så ja antar att det e 60/s?

Visa signatur

Corsair Obsidian 250D | i5 7600K | Gigabyte Z270N WiFi | Samsung 960 EVO 250GB | Fractal Design Integra M 650W | Corsair Hydro H90 |Kingston 8GB 2133M DDR4 CL14 | Asus GeForce GTX 970 4GB STRIX DC2 OC MAX |

Permalänk
Medlem

fps lär vara obegränsad, eller brukar vara om man inte ställt in något...
ett annat sätt för att testa är att öka på till någon nuffra betydligt större än 300,

vad menar du med fungerar inte, fungerar inte som den borde, eller går programmet aldrig in där, eller för tidigt?

Permalänk
Medlem

med debug så trycker du på f9 på den raden du vill koden ska stanna på när det inträffar, på så sätt kan du hålla koll på variablar och liknande.

med

GameTime.ElapsedGameTime.TotalSeconds;

kan då få ut hur lång tid i sekunder det är ifrån förra uppdateringen. det kallas för delta tid, och det kan du använda för att få uppdateringar att få saker att ske över tid, oberoende av frameraten.

Visa signatur

Laptop - MacBook 2.0GHz, 4GB ram, Intel GMA 950
Stationär - i5 3570k @ 4ghz, 8gb ram, 120gb ssd + 2tb hdd, Windows 8 64bit, fractal design arc
Citera så jag hittar tillbaka :)

Permalänk
Medlem

Det jag menar med inte funkar är det att den if satsen som ska "återställa" allt inte funkar. Den går inte in i den ifsatsen typ.

Visa signatur

Corsair Obsidian 250D | i5 7600K | Gigabyte Z270N WiFi | Samsung 960 EVO 250GB | Fractal Design Integra M 650W | Corsair Hydro H90 |Kingston 8GB 2133M DDR4 CL14 | Asus GeForce GTX 970 4GB STRIX DC2 OC MAX |

Permalänk
Medlem
Skrivet av Dakkie:

Det jag menar med inte funkar är det att den if satsen som ska "återställa" allt inte funkar. Den går inte in i den ifsatsen typ.

nu har jag inte kollat all kod, utan bara det du postade i första inlägget, men kan det möjligen bero på att boosttimer bara ökar så länge distance är mindre än eller lika med 40?

Visa signatur

as far as we can tell, the massacre went well...

Permalänk
Medlem
Skrivet av Dakkie:

Det jag menar med inte funkar är det att den if satsen som ska "återställa" allt inte funkar. Den går inte in i den ifsatsen typ.

om du inte vad debuggern är / gör så vet du väll inte heller om koden körs?
gör som ovan och sätt en brytpunkt/break point på någon av raderna, i visual studio brukar det vara att man kan klicka på f9, eller på listen innan raden (grå), eller ev högerklick på raden och add break point... kommer inte ihåg riktigt, men programmet pausar när/om det når den raden, då brukar man kunna peka och se vad variablerna har för värden.

Om du inte har gjort som ovanstående, dvs inte använt riktig tid så kan det vara lite av ett problem då olika datorer jobbar olika fort.

Just det, om du har brytpunkt, kör helst inte ditt spel i full screen, kan vara svårt att tabba ur ibland.

Permalänk
Medlem

mellan 40 och 300 kommer ju ingen av if-satserna att köras. Vad händer däremellan?

Permalänk
Medlem
Skrivet av jovnas:

nu har jag inte kollat all kod, utan bara det du postade i första inlägget, men kan det möjligen bero på att boosttimer bara ökar så länge distance är mindre än eller lika med 40?

Herregud. det e ju så rätt xD Hur kunde jagmissa det? Tack så hemst mycket! Tack allesammans ni adnra med Nu har ja lärt mig använda debuggern

Visa signatur

Corsair Obsidian 250D | i5 7600K | Gigabyte Z270N WiFi | Samsung 960 EVO 250GB | Fractal Design Integra M 650W | Corsair Hydro H90 |Kingston 8GB 2133M DDR4 CL14 | Asus GeForce GTX 970 4GB STRIX DC2 OC MAX |