C#/MonoGame Fanatiker.
Pixel Artist & Game Developer
Breakout spel: försöker fixa en egenskap, så man får 2 bollar
Visa signatur
Tja!
Som rubriken lyder så försöker jag fixa en egenskap, som gör så när väl brickan faller ner och man får egenskapen. Ska en till boll spawnas, men har inte riktigt fått till det. Jag har nog inte lagt till båda i en lista, utom bara en av de och vet inte varför denna inte rör sig, när den spawnas. Och vill att den boll som nuddar undre kant, ska försvinna och den andra ska vara kvar då.
Här är nog den viktigaste koden:
void PowerupPaddleCollisions()
{
if (paddle_rect.Intersects(abilityballs_rect))
{
DrawPowerup = true;
balls.Add(new Rectangle(2, 160, ball_texture.Width, ball_texture.Height));
for (int b = 0; b < balls.Count; b++)
{
if (balls[b].Y > Window.ClientBounds.Height - ball_texture.Height)
{
balls.RemoveAt(b);
if (points > highscore)
{
highscore = points;
}
}
}
}
}
Här är resten av koden:
https://gist.github.com/Lucas98/e57e73d6d8f8b386e6fbf73b1141d...
Blir inte checken
balls[b].Y > Window.ClientBounds.Height - ball_texture.Height
Bara sann om du åker ut i övre kant? Tänker mig t.ex. att Window.ClientBounds.Height == 600, då om balls.[b] åker nedåt i Y-led så har du ett negativt värde på balls[b].Y om den är utanför nedre kant, så det kommer vara < Window.ClientBounds.Height - ball_texture.Height. Beror väl dock på vart (0, 0) sitter i ditt koordinatsystem.
Blir inte checken
balls[b].Y > Window.ClientBounds.Height - ball_texture.Height
Bara sann om du åker ut i övre kant? Tänker mig t.ex. att Window.ClientBounds.Height == 600, då om balls.[b] åker nedåt i Y-led så har du ett negativt värde på balls[b].Y om den är utanför nedre kant, så det kommer vara < Window.ClientBounds.Height - ball_texture.Height. Beror väl dock på vart (0, 0) sitter i ditt koordinatsystem.
Hm, det ska vara rätt då (0.0) startar från det vänstra högre hörnet
Ditt problem ligger i BallPosition()
void BallPosition()
{
//GÖR SÅ BOLLEN KAN ÅKA IVÄG
if (Start == true && paused == false)
{
ball_rect.X += (int)ball_speed.X;
ball_rect.Y += (int)ball_speed.Y;
}
//UTRÄKNING PÅ HUR BOLLENS X-VÄRDE SKA FÖRHÅLLA SIG TILL PADDLES X-VÄRDE
if (Start == false)
{
ball_rect.X = paddle_rect.X + ((paddle_rect.Width / 2) - (ball_texture.Width / 2));
}
}
ändra till
void BallPosition()
{
//GÖR SÅ BOLLEN KAN ÅKA IVÄG
foreach(Rectangle r in balls)
{
if (Start == true && paused == false)
{
r.X += (int)ball_speed.X;
r.Y += (int)ball_speed.Y;
}
//UTRÄKNING PÅ HUR BOLLENS X-VÄRDE SKA FÖRHÅLLA SIG TILL PADDLES X-VÄRDE
if (Start == false)
{
r.X = paddle_rect.X + ((paddle_rect.Width / 2) - (ball_texture.Width / 2));
}
}
}
C#/MonoGame Fanatiker.
Pixel Artist & Game Developer
Copyright © 1999–2024 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.