Python / Pygame中的角度运动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python / Pygame中的角度运动相关的知识,希望对你有一定的参考价值。
我和一些朋友正在搞一个新的射击技师。这个想法是,如果你点击鼠标左键,你的角色向左旋转,如果你点击右边,玩家向右旋转,如果你点击两个,玩家就会向后移动。这是我们的代码:
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()
从当前角度来看,我们如何能够让它倒退?
答案
这是一个数学问题。向后推动图像的任何偏移都将是x和y的复合偏移。这需要三角学来弄清楚。
在你的情况下,在trig,sin(angle) = delta_y / distance_moved
。
和
cos(angle) = delta_x / distance_moved
你需要做的是取distance_moved
,你希望图像每帧移动多少像素,然后乘以角度的sin
或cos
。这将找出你需要偏移精灵的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))
我会把剩下的留给你来弄清楚。
以上是关于Python / Pygame中的角度运动的主要内容,如果未能解决你的问题,请参考以下文章