在快板中创建游标
Creating a cursor in Allegro?
我正在编写一个基本的游戏。
我想要一个带有实际正确轮廓的光标图像,用于碰撞检测。这不适用于鼠标 - 我希望小光标在我的游戏中飞来飞去,我不希望它们的边界框是一个矩形。
但我是 Allegro 和图形编程的新手。我的第一个想法是使用 al_draw_polygon 创建一个标准的光标外观,但后来我意识到我完全不知道如何弄清楚要馈送它的顶点。有没有更好的方法?另外,在绘制多边形时,计算顶点彼此相对坐标的标准方法是什么?你肯定不会在纸上画一个图表并每次都计算出来吗?
我想到的另一种方法是加载鼠标的图像,但随后它将是矩形的。如何正确执行此操作?
注:C++。这是给定的,但以防万一。
您正在询问如何绘制光标以及如何进行冲突检测。虽然相关,但这是两个独立的主题。
如果您刚刚开始,那么我建议您为光标加载 32 位 RGBA PNG 文件。alpha 通道将允许您绘制非矩形图像。您还可以旋转和/或缩放图像。
然后,您必须担心碰撞检测。这真的与快板无关。您可以使用任何2D物理库,或者只是查找有关如何检查直线是否与三角形碰撞等的公式。最简单的方法是从近似对象重要区域周围的框开始。以后始终可以构建更高级的碰撞检测。
很难理解你的意思,但你可以;想要将鼠标添加到程序中,将其添加到循环中(通常在计时器上,以便即使没有输入也会刷新(,并使用从光标获得的坐标然后绘制光标。
碰撞检测有两种方法-有像素完美的方法,检查透明度和有命中框方法,您可以检查x/y是否尝试移动到框之外,如果是,请将其移回,或扣除生命值,无论您打算做什么。
这两种方法都在 Allegro 5 wiki 中介绍。我希望我能有所帮助。要创建一堆向不同方向飞行的光标,请使用类似 srand((; 的东西创建一个随机方向 int,然后添加一个速度,结果将是一个向量,接下来每个光标必须调用一个碰撞函数,以防止它退出游戏窗口的两侧,例如我会创建一个窗口高度和窗口宽度整数,然后检查对象的 x 或 y 是否超出边界。如果是这样,请将光标"反弹"回来,或更改光标的方向。然后,除了"播放器"之外,您需要执行相同的操作,比较当前 x/y 是否与其他 x/y 重叠,如果是,则执行某些操作。
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 在快板中创建游标
- SFML—创建游标并打印输入
- Win32:使用标准游标 (IDC_CROSS) 创建类