我刚开始使用Python和Pygame。我一直关注this lesson (GitHub),了解如何制作基于图块的游戏。我想实现鼠标跟踪,因此播放器精灵将始终显示鼠标指向的位置。
游戏具有Camera类,可在玩家移动时抵消所有精灵。 我设法进行了鼠标跟踪,但是当前它向我显示了它在1024 * 768屏幕上的位置,而播放器的位置例如是在2000 * 1000上。结果:播放器正在从其2000 * 1000的位置看向“内部”该屏幕。
我希望鼠标的位置移动相同数量的像素,因此它始终位于播放器摄像头内部。
答案 0 :(得分:1)
使用
mousex, mousey = pygame.mouse.get_pos()
现在,您需要计算旋转角度才能旋转播放器以查看鼠标位置。
首先,计算一个向量,该向量的方向指向鼠标位置。
x = mousex - player.position.x
y = mousey - player.position.y
这将产生一个向量(x,y),其方向指向鼠标位置。为什么? 因为在这种情况下,当您有两个向量时, a(mousex,mousey)和 b(player.position.x,player.position.y),
数学告诉我们,如果您从a减去b,那么您将创建另一个向量数量,其长度是从a到b的距离。 strong>及其方向点从 b到a
现在计算角度(以弧度为单位)
angle = math.atan2( x, y)
现在,您需要将角度转换为度而不是弧度,因为我们将要使用的下一种方法必须使用以度为单位的角度。
angle = (180 / math.pi) * (-angle)
旋转图像
rotated_image = pygame.transform.rotate(your_player_image, int(angle))
需要特别注意的是,您需要使用通过 pygame.image.load()加载的原始图像,而不是用来对玩家进行攻击的图像。
现在将新图像应用于播放器:
player.image = rotated_image