gpt4 book ai didi

c++ - 如何在 2D 游戏中处理游戏事件长度

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:16 24 4
gpt4 key购买 nike

我知道我想如何处理这个问题,但我不确定它是否理想。我所说的事件是指,例如,如果玩家获胜,一堆 Spark 会飞 1 秒。我正在考虑创建我的游戏引擎类,然后创建一个具有 3 个无效函数的游戏事件基类,更新、绘制、渲染。例如,可以有 3 秒收集 100 个硬币的火叉。我想要实现它的方式是在我的游戏引擎中有一个事件 vector ,我可以在其中推送 fireforks 动画。一旦将某些东西插入 vector 中,游戏就会执行 event[i].render() 等......对于删除它我认为每个事件都可以有一个以帧为单位的事件长度,并且每个帧都会增加一个 uint,如果 uint 匹配长度,它就会从 vector 中弹出。我只是不确定这样做是否是最好的方法。

谢谢

最佳答案

我希望每个事件实例都有一个名为 isDone 或类似名称的方法。然后,对于每一帧,遍历您的事件并:

if (event.isDone()) {
//remove the event
} else {
event.update();
}

以这种方式进行操作可以在将来更轻松地进行更改。并非所有事件都会持续固定的时间(对于您的游戏而言可能并非如此),有些事件甚至可能取决于当前帧以外的其他因素。

但是在您的 eventBaseClass 中,您可以将 isDone 定义为:

return this.endFrame >= game.currentFrame;

并在您需要的任何事件中覆盖它。

关于c++ - 如何在 2D 游戏中处理游戏事件长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com