鼠标位置偏移

时间:2019-05-19 19:23:05

标签: python pygame

我刚开始使用Python和Pygame。我一直关注this lesson (GitHub),了解如何制作基于图块的游戏。我想实现鼠标跟踪,因此播放器精灵将始终显示鼠标指向的位置。

游戏具有Camera类,可在玩家移动时抵消所有精灵。 我设法进行了鼠标跟踪,但是当前它向我显示了它在1024 * 768屏幕上的位置,而播放器的位置例如是在2000 * 1000上。结果:播放器正在从其2000 * 1000的位置看向“内部”该屏幕。

Lesson (GitHub)

我希望鼠标的位置移动相同数量的像素,因此它始终位于播放器摄像头内部。

1 个答案:

答案 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) 

现在使用pygame.transform.rotate()

旋转图像
rotated_image = pygame.transform.rotate(your_player_image, int(angle))

需要特别注意的是,您需要使用通过 pygame.image.load()加载的原始图像,而不是用来对玩家进行攻击的图像。

现在将新图像应用于播放器:

player.image = rotated_image