在快板中创建游标

Creating a cursor in Allegro?

本文关键字:创建 游标      更新时间:2023-10-16

我正在编写一个基本的游戏。

我想要一个带有实际正确轮廓的光标图像,用于碰撞检测。这不适用于鼠标 - 我希望小光标在我的游戏中飞来飞去,我不希望它们的边界框是一个矩形。

但我是 Allegro 和图形编程的新手。我的第一个想法是使用 al_draw_polygon 创建一个标准的光标外观,但后来我意识到我完全不知道如何弄清楚要馈送它的顶点。有没有更好的方法?另外,在绘制多边形时,计算顶点彼此相对坐标的标准方法是什么?你肯定不会在纸上画一个图表并每次都计算出来吗?

我想到的另一种方法是加载鼠标的图像,但随后它将是矩形的。如何正确执行此操作?

注:C++。这是给定的,但以防万一。

您正在询问如何绘制光标以及如何进行冲突检测。虽然相关,但这是两个独立的主题。

如果您刚刚开始,那么我建议您为光标加载 32 位 RGBA PNG 文件。alpha 通道将允许您绘制非矩形图像。您还可以旋转和/或缩放图像。

然后,您必须担心碰撞检测。这真的与快板无关。您可以使用任何2D物理库,或者只是查找有关如何检查直线是否与三角形碰撞等的公式。最简单的方法是从近似对象重要区域周围的框开始。以后始终可以构建更高级的碰撞检测。

很难理解你的意思,但你可以;想要将鼠标添加到程序中,将其添加到循环中(通常在计时器上,以便即使没有输入也会刷新(,并使用从光标获得的坐标然后绘制光标。

碰撞检测有两种方法-有像素完美的方法,检查透明度和有命中框方法,您可以检查x/y是否尝试移动到框之外,如果是,请将其移回,或扣除生命值,无论您打算做什么。

这两种方法都在 Allegro 5 wiki 中介绍。我希望我能有所帮助。要创建一堆向不同方向飞行的光标,请使用类似 srand((; 的东西创建一个随机方向 int,然后添加一个速度,结果将是一个向量,接下来每个光标必须调用一个碰撞函数,以防止它退出游戏窗口的两侧,例如我会创建一个窗口高度和窗口宽度整数,然后检查对象的 x 或 y 是否超出边界。如果是这样,请将光标"反弹"回来,或更改光标的方向。然后,除了"播放器"之外,您需要执行相同的操作,比较当前 x/y 是否与其他 x/y 重叠,如果是,则执行某些操作。