首先推廣;雖然你現在想要敵人跟隨航點,但在我看來,你所擁有的是地圖的特定實例,以確定某物在哪裏移動。
讓我們稱敵人爲「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