1

我的第一个游戏引擎有问题,所以请帮助我:(

第一部分有两部分我将解释问题,第二部分我将解释我的问题。

第一部分:

我有一个对象类的数组(名为“World”)

public Object World[] = new Object[500];

该对象具有许多属性(名称、x、y、动画、长度、宽度 ....)

例如,我想提出合规条件

if( Function_to_detect_collessions("object1_name","object2_name") ){
object2.Animation = "new value" ;
} 

通过这些行,您将了解我:

1-许多对象可以得到相同的名称

2- 如果超过两个具有相同名称的对象(object1_name 和 object2_name)发生了一次以上的碰撞,那么 object2.animation 的修改将在所有被触摸的对象上

example :
if( collesion("ball","ground") ){
ball.movement = stop;
}
//Now imagine that there is two objects (two Balls) on the ground

第二部分:

我想你明白我的意思,现在我将解释我的问题。问题 :

1-如果我可以检测到所有的collessions如何用一行来修改所有对象

object2.prop = "something"

2-是否可以在java中对一个对象进行修改,并且使用某些函数自动对多个对象进行相同的修改。

-------------------------------------------------- ---

我很抱歉我的英语不好,但我试图用我脑海中的所有词语来解释这个问题,我希望我这样做了(任何答案都可以帮助我,即使是解决方案的一部分,所以请帮忙

4

1 回答 1

1

您可以尝试像这样使用 Java 集合:

public ArrayList<Object> World= new ArrayList<>();

for (int i =0; i<500; i++)
  World.add(new Object(i));

// Update all objects
for (Object myObject : World) myObject.prop = "Something";

编辑:

根据您随后的问题。如果您只需要查看特定列表,则可以执行以下操作:

public ArrayList<Object> MoversAndShakers = new ArrayList<>();

MoversAndShakers.add(World.get(3));
MoversAndShakers.add(World.get(5));
MoversAndShakers.add(World.get(9));

// Update all MoversAndShakers
for (Object myObject : MoversAndShakers) myObject.prop = "Something";

或者更好的是,您可以将其封装在一个检测碰撞的函数中(您可能想查看这个问题,了解如何在 java 中为非轴对齐框执行简单快速的碰撞算法):

public ArrayList<Object> MoversAndShakers = new ArrayList<>();

ArrayList<Object>  getMovingObjects(ArrayList<Object> World)
{
  ArrayList<Object> MoversAndShakers = new ArrayList<>();

  for(Object currentObj : World)
  {
     if (currentObj.velocity > 0)
          MoversAndShakers.add(currentObj);
  }
  return MoversAndShakers;
}

然后上面减少到这个

// Update all moving objects
for (Object myObject : getMovingObjects(World)) 
   myObject.prop = "Something";
于 2015-07-23T17:45:56.280 回答