pygame 实现鼠标控制(使用鼠标旋转移动)

849 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情

pygame 实现鼠标控制

鼠标的存在时间几乎与键盘一样长。多年来,鼠标设计没有太大变化 - 设备变得更加符合人体工程学(手形),但设计保持不变。

经典的老鼠下面有一个橡胶涂层的球,可以滚过桌子或

鼠标垫。球的运动由鼠标内部与球接触的两个滚轮拾取。如今,几乎所有的老鼠都是激光老鼠,提供更多

精度。朋友们可以把彼此的鼠标球当作一个实用的笑话,但现在我们总是可以在激光孔上用胶带粘住纸,以获得同样多的乐趣。随着时间的流逝,越来越多的老鼠也有各种按钮。几乎所有都有一个鼠标滚轮,两个滚轮都可以作为第三个点击器。还有很多老鼠,里面也有很多不同的按钮。

游戏经常利用这些鼠标创新。额外的按钮总是派上用场,可以快速访问游戏控件,鼠标滚轮也可以用于

在第一人称射击游戏中切换武器!当然,激光鼠标的额外精度在用狙击步枪挑击敌人时总是派上用场。

使用鼠标旋转移动

您已经看到,在屏幕上绘制鼠标光标非常简单:您只需从 MOUSEMOTION 事件或直接从 pygame.mouse 获取鼠标的坐标即可。get_pos功能。如果您只想显示鼠标光标,则这两种方法都没问题,但鼠标移动也可用于控制绝对位置以外的其他内容,例如在 3D 游戏中旋转或上下查看。在这种情况下,我们不能直接使用鼠标位置,因为坐标将被限制在屏幕的边缘,我们不希望玩家向左或向右转动的次数受到限制!在这些情况下,我们希望获得鼠标的相对移动,通常称为鼠标米奇,这只是意味着鼠标自上一帧以来移动了多远。清单 6-4 将鼠标旋转移动添加到 sprite 演示中。除了光标键之外,当鼠标向左或向右移动时,sprite 还会旋转。警告 如果您计划复制、粘贴和运行此代码,请注意,要退出,您将无法使用鼠标。您将使用键盘上的Esc键退出游戏!

image.png

image.png

要使用鼠标控制子画面旋转,清单 6-4 必须为鼠标启用虚拟无限区域,这可以防止 Pygame 将鼠标限制在物理屏幕区域。这是通过以下两行完成的:

image.png

对set_visible(False)的调用关闭鼠标光标,对set_grab(True)的调用会抓取鼠标,以便Pygame可以完全控制它。这样做的副作用是,您不能使用鼠标关闭窗口,因此您必须提供另一种关闭脚本的方法(如果按 Esc 键,清单 6-4 将退出)。以这种方式使用鼠标也使得难以使用其他应用程序,这就是为什么它通常最好在全屏模式下使用的原因。

清单 6-4 中的以下行获取 x 轴的鼠标米奇(在索引 [0]处)。它将它们除以5,因为我发现使用该值直接旋转子画面的速度太快了。您可以调整此值以更改鼠标灵敏度(数字越大,鼠标控件的灵敏度就越低)。游戏通常允许玩家在首选项菜单中调整鼠标灵敏度。

image.png

除了使用鼠标旋转之外,这些按钮还用于向前(鼠标左键)和向后(鼠标右键)移动子画面。检测按下的鼠标按钮类似于按键。函数 pygame.mouse.get_pressed () 为鼠标左键、鼠标中键和鼠标右键返回三个布尔值的元组。如果有任何为 True,则在调用时按住相应的鼠标按钮。使用此函数的另一种方法是,它将元组解压缩为三个值:

image.png

让我们来看看游戏。鼠标更详细地。它是另一个简单的模块,只有八个功能:

  • ·pygame.mouse.get_pressed - 返回按下的鼠标按钮,作为三个布尔值的元组,一个用于鼠标左、中、右按钮。

  • ·pygame.mouse.get_rel - 以具有 x 和 y 相对移动的元组的形式返回相对鼠标移动(或米奇)。

  • get_pos - 将鼠标坐标作为 x 和 y 值的元组返回。

  • ·pygame.mouse.set_pos - 设置鼠标位置。将坐标作为 x 和 y 的元组或列表。

  • set_visible - 更改标准鼠标光标的可见性。如果为 False,则光标将不可见。

  • ·pygame.mouse.get_focused-如果皮游戏返回真实

窗口正在接收鼠标输入。当Pygame在窗口中运行时,它将仅在窗口被选中时在显示器的前面接收鼠标输入。

  • pygame.mouse.set_cursor - 设置标准光标图像。这很少需要,因为通过将图像布化到鼠标坐标可以获得更好的结果。

  • ·pyGame.mouse.get_cursor-获取标准光标图像。请参阅上一项。

鼠标游戏

不起眼的鼠标可以让你在游戏中非常有创意。即使是一个简单的光标也可以成为益智和策略游戏的绝佳游戏工具,其中鼠标通常用于在游戏竞技场中拾取和丢弃游戏元素。这些元素可以是任何东西,从激光反射镜到嗜血的食人魔,具体取决于游戏。实际的鼠标指针不需要是箭头。对于一个神的游戏,它可能是神灵的无所不能的手,或者可能是一个神秘的外星人探测器。经典的点击式冒险游戏也很好地利用了鼠标。在这些游戏中,游戏角色会走到玩家点击的任何内容并查看它。如果它是一个无用的物体,它可以被存储起来,以便在游戏后期使用。

对于更直接控制玩家角色的游戏,鼠标用于旋转或移动。飞行模拟游戏可以使用鼠标的x和y轴来调整飞机的俯仰和偏航,以便玩家可以对轨迹进行微调。在Pygame中执行此操作的一种简单方法是将鼠标添加到

飞机。我还喜欢将鼠标用于第一人称射击游戏,并使用x轴左右旋转,使用y轴进行上下查找。这感觉很自然,因为头部倾向于以这种方式移动。我可以将头部旋转到任何一侧,也可以上下看。我也可以把头向任何一边倾斜,但我不经常这样做!

您还可以组合鼠标和键盘控件。我特别喜欢使用键盘进行移动和鼠标瞄准的游戏。例如,坦克可能会使用光标键移动,但使用鼠标旋转炮塔,以便您可以在不面向同一方向的情况下向敌人开火。

当然,您不仅限于以与其他游戏相同的方式使用鼠标。随心所欲地发挥创意 - 只要确保先在你的几个朋友身上测试它!