首先推广;虽然你现在想要敌人跟随航点,但在我看来,你所拥有的是地图的特定实例,以确定某物在哪里移动。
让我们称敌人为“GameEntity”(可能为MoveableGameEntity)的一个实例。
你应该做的是告诉地图管理相关的GameEntities,然后地图可以保留这些对象的列表并根据需要移动它们。
代码片段。
interface MoveableGameEntity
{
void positionNotify(Position new_postition);
};
public class Barbarian implements MoveableGameEntity
{
void positionNotify(Position new_postition)
{
// do something
}
};
// during initialisation.
map.Add(new Enemy("Barbarian 1"));
map.Add(new Enemy("Barbarian 2"));
//during map processing
Position new_position = new Position();
for (MoveableGameEntityList moveable : moveable_game_entity_items)
{
new_position = get_new_posistion(moveable);
item.moveTo(new_position);
moveable.positionNotify(new_position);
}
的地图将需要有一个方法get_new_position(MoveableGameEntity GE),这将决定新posisiton和敌人也只能通过positionNotify方法被告知他们的新posistion。
MoveableGameEntityList是一个将游戏实体和它的位置绑定在一起的对象。这种方式游戏实体不包含任何位置信息,这是由另一个对象管理。
我不知道AS3的第一件事,而是一个智者曾经告诉我,打破习惯几乎是不可能的,而是一个应该简单地试图获得一个新的习惯代替它。 – Ken 2010-02-28 05:05:50
是的,这是我的目标,我只是需要一些指向正确的方向来获得这些良好的习惯。 – 2010-02-28 05:30:18
我建议你编辑你的问题标题更具体。你想知道如何在OOP中使用结构,而不是关于打破习惯的一般建议。 – Stiggler 2010-02-28 19:21:41