Yao-class-cpp-studio / battle_game

MIT License
9 stars 87 forks source link

[Utility]time system #244

Open JohnVictor36 opened 1 year ago

JohnVictor36 commented 1 year ago

增加一个标准的时间系统,可以让一个事件在指定时间之后发生。(不希望直接用 clock 里面的 sleep 函数) 可以实现连发但不同时发出若干颗子弹。 实现思路:给对象单独拥有一个事件池,标记每一个事件应该在何时触发。

XieRujian commented 1 year ago

您好,首先您举的例子可以不通过建立时间池实现,您可以参见其他同学实现的src/battle_game/core/units/zibeng_doge.cpp。
具体思路是,对攻击方内置一个变量,记录它还需要连发多少颗子弹,没过一帧就强行发射子弹。
其实你会发现,攻击方如何发动它的攻击,这个内容总是可以避开实现时间池的。

当然,我认为您的想法对被攻击方如何承受攻击效果上更为重要。
比方说假设你想实现“中毒”攻击效果,给所有坦克都额外打上一个“中毒”时间标记是很不现实的。

简而言之,发动攻击仅仅是一个单位的事,承受攻击是所有单位都要考虑的事儿,所以更有必要对承受的攻击建立时间池,某种意义上可以称之为“状态栏”。