(pygame)Ich brauche hilfe beim sprite rotieren!

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
PReFaCT
User
Beiträge: 2
Registriert: Samstag 16. November 2019, 21:29

Wenn ich einen Knopf (w,a,s,d) drücke soll sich dass Auto drehen und in die Richtung "Fahren". Doch wenn ich jetzt mit dem Code "Fahren" will dreht es sich immer 90grad in eine richtung auch wenn ich zwei mal z.b. W drücke.



Code: Alles auswählen

import pygame

pygame.init()

display_width = 1080
display_hight = 800

black = (0,0,0)
white = (255,255,255)
red = (255,0,0)


gameDisplay = pygame.display.set_mode((display_width, display_hight))
pygame.display.set_caption("racinggame")
clock = pygame.time.Clock()

carImg = pygame.image.load(r"C:\Users\PReFaCT\Desktop\car.png")

def car (x,y):
    gameDisplay.blit(carImg, (x,y))


x = (display_width * 0.45)
y = (display_hight * 0.8)

x_change = 0
y_change = 0



crashed = False

#mainloop
while not crashed:
    #events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            crashed = True


        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                x_change = -5
                
            if event.key == pygame.K_d:
                x_change = 5
            if event.key == pygame.K_w:
                y_change = -5
            if event.key == pygame.K_s:
                y_change = 5

            
            rotate = pygame.transform.rotate
            if event.key == pygame.K_d:
                carImg = rotate(carImg, 90)
            elif event.key == pygame.K_a:
                carImg = rotate(carImg, 90)
            if event.key == pygame.K_w:
                carImg = rotate(carImg, 90)
            elif event.key == pygame.K_s:
                carImg = rotate(carImg, 90)




        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d or event.key == pygame.K_w or event.key == pygame.K_s :
                x_change = 0
                y_change = 0

    


    

    x += x_change
    y += y_change



    gameDisplay.fill (white)
    car(x,y)

    pygame.display.update()
    #FPS
    clock.tick(144)

#pygame ende
pygame.quit()
quit()
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Statt jedes Mal um 90 grad zu drehen, musst du pro richtung entsprechend drehen. Und dabei immer das Ursprungs Bild nehmen, und so rotieren das es zur aktuellen Bewegung passt.
PReFaCT
User
Beiträge: 2
Registriert: Samstag 16. November 2019, 21:29

__deets__ hat geschrieben: Samstag 16. November 2019, 22:23 Statt jedes Mal um 90 grad zu drehen, musst du pro richtung entsprechend drehen. Und dabei immer das Ursprungs Bild nehmen, und so rotieren das es zur aktuellen Bewegung passt.
und wie ? xD Ich finde im Internet nichts passendes.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Programmieren heißt auch, selbst nachzudenken. Du weißt schon, wie man das Bild dreht, jetzt mußt Du nur noch das ursprüngliche Bild im den richtigen Winkel drehen, statt das aktuelle immer um 90grad egal welche Taste gedrückt wurde.
Antworten