2011-03-31 108 views
2

所以我正在努力学习如何开发2D游戏。物理OO游戏编程

我在玩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; } 
} 

假设我想模拟N个这些对象之间的交互行为。在这种情况下人们会采用什么样的典型模式?

因此,例如,你会简单地称这种方法为MyPhysicsSim.DoPhysics(List<MyGenericObjects>);

假设这是不是一个巨大的舒展。在这个方法里面,你如何计算相互作用和结果运动?我无法理解它(很明显,我明白,有一些基本方程可以解决方向和速度等问题,但我似乎无法解决如何将这些方法作为算法应用)。

我看了很多教程,他们似乎都专注于绘制一个对象,或者假定对内部的理解水平超过我的头。所以我希望能有一个非常简单,愚蠢的回应。

所以基本上我问的是如何处理面向对象范例中的二维对象之间的交互?

回答

6

传统上,大多数游戏都有类似下面的地方之一为核心的循环:

while (1) { 
    World.respondToInput(); 
    World.updatePhysics(); 
    World.renderScene(); 
    Timer.waitUntilFrameExpires(); 
} 

和“updatePhysics()方法可以做一些非常基本的,如:

for (Object obj1 in World.trackedObjects()) { 
    for (Object obj2 in World.trackedObjects()) { 
     if (obj1.influences(obj2)) { 
      obj1.update(); obj2.update(); 
     } 
    } 
} 

所以你基本上在你模拟的世界中有一个“嘀嗒”的声音,而你的代码的作用是反映场景中发生的变化。

+0

这基本上是基础知识,剩下的由你决定,但你如何阅读游戏循环中的更多内容:http://obviam.net/index.php/the-android-game-loop/ – 2011-03-31 05:06:29