我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

拉里·麦克马芬(Larry McMuffin)

好吧,我正在测试赛车游戏...而且我希望汽车向其指向的方向移动。这是我的代码。

import pygame, sys
from pygame.locals import *
pygame.init()
mainClock = pygame.time.Clock()
degree = 0
WHITE = 250,250,250
rect2 = pygame.rect = (100,100,50,50)
WINDOWWIDTH = 1200
WINDOWHEIGHT = 750
thing = pygame.image.load('car.png')
screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption('Teh test')
left = False
right = False
while True:
    rect2 = pygame.rect = (100,100,50,50)
    if right == True:
        degree -= 2
    if left == True:
        degree += 2
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == ord('a'):
                left = True
            if event.key == ord('d'):
                right = True
        if event.type == KEYUP:
            if event.key == ord('a'):
                left = False
            if event.key == ord('d'):
                right = False
    pygame.draw.rect(screen,WHITE,rect2)
    screen.fill((40, 40, 40))
    thing2 = pygame.transform.rotate(thing,degree)
    screen.blit(thing2,(100,100))
    pygame.display.update()
    mainClock.tick(60)

因此,就像我说的那样,我想知道如何沿汽车指向的方向移动汽车。我试图想办法,但什么也没想。因此,实际上没有任何要纠正的东西。(如果有任何问题,我会编辑我的问题来回答。)在回答之前,请确保您了解pygame。

卡布

您将要使用三角函数来计算您要在x和y方向上移动多少,以便最终使汽车在正确的方向上移动。要计算此值,您可以执行以下操作:

dx = math.cos(math.radians(degree))
dy = math.sin(math.radians(degree))
position = (position[0] + dx * SPEED, position[1] - dy * SPEED)

请注意,您还需要在代码开始处的某个位置初始化位置变量,如下所示:

position = (100, 100)

然后,您必须更改代码的空白行,以便在位置变量处绘制,而不是始终在(100,100)处绘制:

screen.blit(thing2, position)

编辑:工作示例

import pygame, sys
from pygame.locals import *
import math
pygame.init()
mainClock = pygame.time.Clock()
degree = 0
WHITE = 250,250,250
rect2 = pygame.rect = (100,100,50,50)
WINDOWWIDTH = 1200
WINDOWHEIGHT = 750
thing = pygame.image.load('car.png')
screen = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT), 0, 32)
pygame.display.set_caption('Teh test')
left = False
right = False
position = (100, 100)
while True:
    rect2 = pygame.rect = (100,100,50,50)
    if right == True:
        degree -= 2
    if left == True:
        degree += 2
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == ord('a'):
                left = True
            if event.key == ord('d'):
                right = True
        if event.type == KEYUP:
            if event.key == ord('a'):
                left = False
            if event.key == ord('d'):
                right = False
    pygame.draw.rect(screen,WHITE,rect2)
    screen.fill((40, 40, 40))
    thing2 = pygame.transform.rotate(thing,degree)
    dx = math.cos(math.radians(degree))
    dy = math.sin(math.radians(degree))
    position = (position[0] + dx, position[1] - dy)
    screen.blit(thing2, position)
    pygame.display.update()
    mainClock.tick(60)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

来自分类Dev

使用2d html5Canvas和ctx.rotate函数沿其朝向的方向移动对象

来自分类Dev

如何修复Django Translation ASCII解码错误?

来自分类Dev

使用AWS Translation API时出现ThrottlingException

来自分类Dev

为什么要使用fillRect而不是translation?

来自分类Dev

在将对象保存到数据库之前或之后,我将如何对其进行排队?

来自分类Dev

如何在symfony2中使用translation:update?

来自分类Dev

如何使用 Google Translation API 实时动态翻译?

来自分类Dev

如何在translation.en.yml中传递变量

来自分类Dev

我可以将翻译反馈给 Google Cloud Translation API 进行训练吗?

来自分类Dev

我在 pytorch 教程中有一个关于 TRANSLATION WITH A SEQUENCE TO SEQUENCE 的问题

来自分类Dev

Yii Translation Array:如何在嵌套数组中获取特定值

来自分类Dev

无法使用Flash ARM Translation在Genymotion上运行JavaFX Port Application

来自分类Dev

无法使用Flash ARM Translation在Genymotion上运行JavaFX Port Application

来自分类Dev

IBM Watson Language Translation - 使用平行语料库进行训练的正确方法

来自分类Dev

Maintain yml translation files

来自分类Dev

当我使用pygame.transform.rotate()时,它将移动我的图像,因此,如果连续使用,它将离开屏幕。为什么?

来自分类Dev

addSubview之后的视图移动

来自分类Dev

在第一个问号之后,我将如何替换所有问号

来自分类Dev

在此 Java 类的每次迭代之后,我将如何存储条目列表?

来自分类Dev

正则表达式:我将如何使用 Negative Lookahead 排除可能出现在搜索词之前或之后的特定字符

来自分类Dev

如何删除'-'之后的文字?

来自分类Dev

strdup之后如何释放()?

来自分类Dev

Attribute with translation in Symfony2

来自分类Dev

尝试致电Watson Translation Service

来自分类Dev

在`shift`之后使用`%*`

来自分类Dev

在switchMapTo之后使用switchMapTo

来自分类Dev

在getchar之后使用Scanf?

来自分类Dev

在 $group 之后使用 $lookup

Related 相关文章

  1. 1

    我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

  2. 2

    使用2d html5Canvas和ctx.rotate函数沿其朝向的方向移动对象

  3. 3

    如何修复Django Translation ASCII解码错误?

  4. 4

    使用AWS Translation API时出现ThrottlingException

  5. 5

    为什么要使用fillRect而不是translation?

  6. 6

    在将对象保存到数据库之前或之后,我将如何对其进行排队?

  7. 7

    如何在symfony2中使用translation:update?

  8. 8

    如何使用 Google Translation API 实时动态翻译?

  9. 9

    如何在translation.en.yml中传递变量

  10. 10

    我可以将翻译反馈给 Google Cloud Translation API 进行训练吗?

  11. 11

    我在 pytorch 教程中有一个关于 TRANSLATION WITH A SEQUENCE TO SEQUENCE 的问题

  12. 12

    Yii Translation Array:如何在嵌套数组中获取特定值

  13. 13

    无法使用Flash ARM Translation在Genymotion上运行JavaFX Port Application

  14. 14

    无法使用Flash ARM Translation在Genymotion上运行JavaFX Port Application

  15. 15

    IBM Watson Language Translation - 使用平行语料库进行训练的正确方法

  16. 16

    Maintain yml translation files

  17. 17

    当我使用pygame.transform.rotate()时,它将移动我的图像,因此,如果连续使用,它将离开屏幕。为什么?

  18. 18

    addSubview之后的视图移动

  19. 19

    在第一个问号之后,我将如何替换所有问号

  20. 20

    在此 Java 类的每次迭代之后,我将如何存储条目列表?

  21. 21

    正则表达式:我将如何使用 Negative Lookahead 排除可能出现在搜索词之前或之后的特定字符

  22. 22

    如何删除'-'之后的文字?

  23. 23

    strdup之后如何释放()?

  24. 24

    Attribute with translation in Symfony2

  25. 25

    尝试致电Watson Translation Service

  26. 26

    在`shift`之后使用`%*`

  27. 27

    在switchMapTo之后使用switchMapTo

  28. 28

    在getchar之后使用Scanf?

  29. 29

    在 $group 之后使用 $lookup

热门标签

归档