【发布时间】:2015-08-12 16:13:46
【问题描述】:
我的游戏对象通常看起来像这样pseudo-javascript 时尚:
function Player(){
this.update = function() {
//logic that should be run per update frame
//physics code I really don't want here
}
}
Player.prototype = new gameObject;
Player.update 被一个实例化它的gameObjectManager 调用,它基本上是一个数组,通过在其中的所有对象上调用update() 循环。很好,这对于特定于对象本身的更新功能来说已经足够好了。
我不希望该功能是物理逻辑。它在我的代码中造成了不必要的膨胀,我发现我必须在我创建的每个唯一 gameObject 中复制很多功能。找到合适的类来放置它是很困难的,因为不是我所有的gameObjects 都需要它。
我尝试过的一个解决方案是另一个类,例如 gameObjectManger,巧妙地命名为 physicsManger,它将维护需要物理更新的对象数组,并直接对它们进行操作,而不是为每个对象调用 update()。
或者,也许该代码应该进入gameObjectManager 本身,我不知道。
我的目标是让gameworld 中的任意对象应用物理就像设置一样简单
player.physics = true;
理想情况下,对象不应该知道或关心物理代码,只是可以对其进行操作。
【问题讨论】:
-
所以只需创建一个名为
DoPhysics()的函数,然后调用该函数来执行所有物理逻辑。 -
-
您可能还想要一个结构体之类的 PhysicsSettings 包括质量、浮力、摩擦力、升力等任何适合您正在做的事情。
标签: game-physics