OO游戏编程中的物理学

Max*_*ich 2 c# java android physics

所以我正在尝试学习如何开发2D游戏.

我正在玩Android和C#.

我遇到的问题是这个.

绘制某种精灵很容易.我努力的目的是想象一个人如何编写屏幕上各种对象的交互.

例如,假设我有以下对象.

public class MyGenericObject {
    public MyGenericObject() {}
    public Int32 Width { get; set; }
    public Int32 Height { get; set; }
    public Int32 X { get; set; }
    public Int32 Y { get; set; }
    public Image ObjectImage { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

让我们说我想模拟N个这些对象之间的交互行为.在这种情况下,人们会使用什么样的典型模式?

因此,举例来说,你只需要调用一个方法,如 MyPhysicsSim.DoPhysics(List<MyGenericObjects>);

假设这不是一个巨大的延伸.在这个方法的内部,你如何计算相互作用和产生的运动?我只是无法理解它(显然我明白有基本的方程可以解决方向和速度等等但我似乎无法弄清楚如何将这些作为算法应用).

我已经看了很多教程,所有这些教程似乎只专注于绘制一个对象或者对我内心的内部结构有一定程度的理解.所以我希望有一个非常简单,愚蠢的回应.

所以基本上我要问的是你如何处理OO范例中的2D对象之间的互动?

yan*_*yan 6

传统上,大多数游戏的循环类似于核心某处的循环:

while (1) {
    World.respondToInput();
    World.updatePhysics();
    World.renderScene();
    Timer.waitUntilFrameExpires();
}
Run Code Online (Sandbox Code Playgroud)

并且'updatePhysics()'方法可以做一些非常基本的事情,例如:

for (Object obj1 in World.trackedObjects()) {
    for (Object obj2 in World.trackedObjects()) {
        if (obj1.influences(obj2)) {
            obj1.update(); obj2.update();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以你在你正在模拟的世界中基本上有一个'tick',你的代码可以反映场景中可能发生的增量.