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

时间:2010-02-08 23:55:52

标签: c++

我知道如何处理这个问题,但我不确定它是否理想。 事件我的意思是,例如,如果玩家获胜,一堆火花飞行1秒钟。我正在考虑创建我的游戏引擎类,然后创建一个游戏事件基类,它有3个void函数,update,draw,render。例如,可以存在用于收集100个硬币3秒钟的火炮。我想要实现它的方法是在我的游戏引擎中有一个事件向量,我可以在其中推动fireforks动画。一旦在向量中推送了一些东西,游戏就会执行event [i] .render()等...删除它我认为每个事件可以在帧中具有事件长度,并且每个帧增加一个uint,如果uint与长度匹配,则从向量中弹出它。我只是不确定这样做是不是最好的方式。

由于

2 个答案:

答案 0 :(得分:1)

有许多不同的方法可以给这只猫上皮。例如,您的一个例程可以返回一个bool,指示是否应该从动画队列中弹出此动画。我不确定更新,绘制和渲染之间的区别是什么,但除此之外的所有内容......

我的建议是阅读。阅读其他动画引擎正在做的事情,找到一个好的图形编程宝石书,并从预先存在和已建立的实现中收集想法和技术。一个更好的解决方案是使用其中之一,为您节省很多痛苦和痛苦。

答案 1 :(得分:1)

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

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

这样做可以在将来更轻松地进行更改。并非所有事件都会持续一段固定的时间(这可能不适用于您的游戏),有些甚至可能依赖于当前帧以外的其他事件。

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

return this.endFrame >= game.currentFrame;

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