子弹在视频游戏中如何工作?
我在用C#设计视频游戏时遇到了这个问题。 如果我们考虑《战地风云》或《使命召唤》之类的游戏,那么数百枚甚至数千枚子弹会同时飞行。事件是不断触发的,据我所知,这会吸收很多处理能力……或者是吗?我想知道各种游戏开发人员如何管理(2D和3D)项目符号,以及每种方法最有效的方法是什么。 我读了一个问题:如何在视频游戏中模拟子弹?但是从程序设计的角度来看,它没有涉及项目符号的工作方式。 我有几个主意,但每个都有缺点: 我想到的最有效的方法(用于2D游戏): 假设我要创建一个名为Bullet的类,并且用户长时间按住按钮,将每0.01秒创建一个Bullet对象。本项目符号有: 1速度 2从其拍摄的起始位置 3精灵纹理 4命中效果 由于项目符号是其自己的类,因此它可以管理绘图,移动和动作侦听器本身。 在处理器上处理成千上万的实例化实例然后销毁(触发击中效果时)会不会很困难?RAM空间? 3D游戏的有效方法-我的另一个想法是: 可以说我创建了一个武器类。该武器具有多种功能,其中一些功能: 1检测武器瞄准的位置,并确定它是否在瞄准目标 2触发枪声的动画 3有一个doDamage()方法,该方法指示从枪支指向的内容中减去生命值 4按下按钮时通知项目符号动画类 然后,我可以创建一个静态类,例如BulletAnimation,它可以从触发它的枪支所在的位置,该枪支指向的位置(用于子弹目的地)获取通知,以及有关用于子弹的适当精灵和速度的信息。然后,此类根据位置和所需的精灵绘制精灵(在新线程上,可能是idk),以模拟从枪支发射的子弹。 后者似乎更难编写代码,并且要不断地调用静态函数一次执行成千上万的子弹,是否需要大量处理能力?获取开始位置和结束位置的持续更新也很困难。 我的问题是,游戏创作者最有效的方法是什么?这种方法会从2D游戏变为3D游戏吗?