如何在使用按键移动时在 pygame 中转动精灵
How to turn the sprite in pygame while moving with the keys
所以基本上我一直希望可以在使用 WA[=13= 移动精灵时有效地转动它]SD。任何想法,因为我肯定被难住了,谢谢!
参见 How do I rotate an image around its center using PyGame? 旋转表面。如果你想围绕中心点旋转图像(cx,cy)你可以这样做:
rotated_car = pygame.transform.rotate(car, angle)
window.blit(rotated_car, rotated_car.get_rect(center = (cx, cy))
使用pygame.math.Vector2
存储运动的position
和direction
。当分别按下 w 和 s 时,将 position
更改为当前的 direction
。当a分别按下d时,用rotate_ip
改变direction
向量的角度:
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
position += direction
if keys[pygame.K_s]:
position -= direction
if keys[pygame.K_a]:
direction.rotate_ip(-1)
if keys[pygame.K_d]:
direction.rotate_ip(1)
另请参阅:
最小示例: repl.it/@Rabbid76/PyGame-CarMovement
import pygame
pygame.init()
window = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()
car = pygame.image.load('CarRed64.png')
position = pygame.math.Vector2(window.get_rect().center)
direction = pygame.math.Vector2(5, 0)
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
position += direction
if keys[pygame.K_s]:
position -= direction
if keys[pygame.K_a]:
direction.rotate_ip(-1)
if keys[pygame.K_d]:
direction.rotate_ip(1)
window.fill(0)
angle = direction.angle_to((1, 0))
rotated_car = pygame.transform.rotate(car, angle)
window.blit(rotated_car, rotated_car.get_rect(center = (round(position.x), round(position.y))))
pygame.display.flip()
pygame.quit()
exit()
所以基本上我一直希望可以在使用 WA[=13= 移动精灵时有效地转动它]SD。任何想法,因为我肯定被难住了,谢谢!
参见 How do I rotate an image around its center using PyGame? 旋转表面。如果你想围绕中心点旋转图像(cx,cy)你可以这样做:
rotated_car = pygame.transform.rotate(car, angle)
window.blit(rotated_car, rotated_car.get_rect(center = (cx, cy))
使用pygame.math.Vector2
存储运动的position
和direction
。当分别按下 w 和 s 时,将 position
更改为当前的 direction
。当a分别按下d时,用rotate_ip
改变direction
向量的角度:
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
position += direction
if keys[pygame.K_s]:
position -= direction
if keys[pygame.K_a]:
direction.rotate_ip(-1)
if keys[pygame.K_d]:
direction.rotate_ip(1)
另请参阅:
最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((500, 500))
clock = pygame.time.Clock()
car = pygame.image.load('CarRed64.png')
position = pygame.math.Vector2(window.get_rect().center)
direction = pygame.math.Vector2(5, 0)
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_w]:
position += direction
if keys[pygame.K_s]:
position -= direction
if keys[pygame.K_a]:
direction.rotate_ip(-1)
if keys[pygame.K_d]:
direction.rotate_ip(1)
window.fill(0)
angle = direction.angle_to((1, 0))
rotated_car = pygame.transform.rotate(car, angle)
window.blit(rotated_car, rotated_car.get_rect(center = (round(position.x), round(position.y))))
pygame.display.flip()
pygame.quit()
exit()