gpt4 book ai didi

c# - 开发游戏 - 如何执行需要多个游戏循环的事情?

转载 作者:行者123 更新时间:2023-11-30 17:23:56 27 4
gpt4 key购买 nike

我使用的是 C#,但这适用于用任何语言开发游戏。

大多数游戏都使用“游戏循环”,看起来像这样:

while (game is running)
{
UpdateEnvironment();
DrawEnvironment();
}

我正在努力理解需要多个游戏循环的事情如何适合等式。例如,让一个能量球从一个板 block 漂浮到另一个板 block 。或者让玩家移动一个方 block (不是从一个方 block 跳到另一个方 block ,而是为它设置动画)。

我想出的最好的事情是计算自上次循环以来耗时,并将其传递给对象/方法,以便它可以做它的事情。但这使得执行以下操作变得困难:

AI.MoveTo(10, 20); // Pathfind, then walk the path to this tile.
Player.Shoot(); // Shoot a bullet, and detect collisions and update along the way.

我在哪里可以找到有关“执行需要多个游戏循环才能完成的事件”的更多信息?

最佳答案

一种方法是存储完整的待处理 Action ,然后让游戏循环只执行其中的一小部分。从 Action 中引用的游戏对象知道它们所处的状态,因此下一个要执行的位是已知的。虽然还有一些事情要做,但该操作会被添加回下一个循环中要执行的待处理操作队列,并且当操作完成时,它不再被添加回。

所以在您的 MoveTo 示例中,要存储的操作是移动到 10, 20 并且每次在游戏循环中,AI 向它移动了一点。您的 Shoot 示例可能更适合描述为子弹朝某个方向行进,然后无论它击中什么都决定 Action 是否继续。

我没有做过游戏开发,所以我不知道在那个领域是否是这样做的,但这是我在基于事件的系统中做类似事情的方式。

关于c# - 开发游戏 - 如何执行需要多个游戏循环的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1584316/

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