Python / Pygame中的角度运动

问题描述 投票:0回答:1

我和一些朋友正在搞一个新的射击技师。这个想法是,如果你点击鼠标左键,你的角色向左旋转,如果你点击右边,玩家向右旋转,如果你点击两个,玩家就会向后移动。这是我们的代码:

if char_image_number == (0, 0, 0):
        char_image = pygame.image.load(player_none).convert_alpha()
        char_image = pygame.transform.rotate(char_image, angle)

        screen.blit(char_image,(540, 260))
        pygame.display.update()

elif char_image_number == (1, 0, 0):
        print (angle)
        char_image = pygame.image.load(player_left).convert_alpha()
        angle+=1
        char_image = pygame.transform.rotate(char_image, angle)
        bullets.append(
        screen.blit(char_image,(540, 260))
        pygame.display.update()

elif char_image_number == (0, 0, 1):
        print (angle)
        angle-=1
        char_image = pygame.image.load(player_right).convert_alpha()
        char_image=pygame.transform.rotate(char_image, angle)

        screen.blit(char_image,(540, 260))

        pygame.display.update()
elif char_image_number == (1, 0, 1):
        char_image = pygame.image.load(player_both).convert_alpha()
        char_image = pygame.transform.rotate(char_image, angle)

        screen.blit(char_image,(540, 260))
        pygame.display.update()

从当前角度来看,我们如何能够让它倒退?

python pygame game-physics
1个回答
1
投票

这是一个数学问题。向后推动图像的任何偏移都将是x和y的复合偏移。这需要三角学来弄清楚。

在你的情况下,在trig,sin(angle) = delta_y / distance_moved

cos(angle) = delta_x / distance_moved

你需要做的是取distance_moved,你希望图像每帧移动多少像素,然后乘以角度的sincos。这将找出你需要偏移精灵的y和x的变化。

在Python和许多其他语言中,您将需要以弧度为单位的角度(非常标准的单位)。该数学单位在一个Pi中表示180度。要将度数转换为弧度,请除以180并乘以Pi。

在Python中:

import math

def convert_degrees(degrees):
    return degrees / 180.0 * math.pi

罪与cos的例子:

import math
example = 2.0 * math.sin(math.pi) 
example2 = 3.0 * math.cos(convert_degrees(120))

我会把剩下的留给你来弄清楚。

© www.soinside.com 2019 - 2024. All rights reserved.