0
我正在製作一個戰艦模擬器,您可以在其中駕駛戰列艦完成某個目標,同時防禦敵方船隻。所述敵方船隻應具有原始AI的形式,以允許其追蹤你的船的位置並試圖射擊它。AS3中的人工智能問題
我遇到的問題是,我並不完全確定如何根據位置對一組敵船進行編碼以磨合玩家的船。我曾多次嘗試讓敵船移動,但無濟於事。
附件是我的敵人船舶運動最近編碼的嘗試(mvi_PBattleship是玩家船mvi_EBattleship是敵艦):
var EMoveTimer:Timer = new Timer(10);
EMoveTimer.addEventListener("timer", EMove);
function EMove(eventArgs:TimerEvent):void{
EMoveTimer.start();
if(((mvi_EBattleship.x + 31.7) < mvi_PBattleship.x) && (mvi_EBattleship.x < mvi_PBattleship.x) && ((mvi_EBattleship.y + 195.8) < mvi_PBattleship.y) && (mvi_EBattleship.y < mvi_PBattleship.y)){
mvi_EBattleship.x += 1;
mvi_EBattleship.y += 1;
}
else if(((mvi_EBattleship.x + 31.7) < mvi_PBattleship.x) && (mvi_EBattleship.x < mvi_PBattleship.x) && (mvi_EBattleship.y > (mvi_PBattleship.y + 195.8)) && ((mvi_EBattleship + 195.8) > (mvi_PBattleship.y + 195.8))){
mvi_EBattleship.x += 1;
mvi_EBattleship.y -= 1;
}
else if((mvi_EBattleship.x > (mvi_PBattleship.x + 31.7)) && ((mvi_EBattleship.x + 31.7) > (mvi_PBattleship.x + 31.7)) && ((mvi_EBattleship.y + 195.8) < mvi_PBattleship.y) && (mvi_EBattleship.y < mvi_PBattleship.y)){
mvi_EBattleship.x -= 1;
mvi_EBattleship.y += 1;
}
else if((mvi_EBattleship.x > (mvi_PBattleship.x + 31.7)) && ((mvi_EBattleship.x + 31.7) > (mvi_PBattleship.x + 31.7)) && (mvi_EBattleship.y > (mvi_PBattleship.y + 195.8)) && ((mvi_EBattleship + 195.8) > (mvi_PBattleship.y + 195.8))){
mvi_EBattleship.x -= 1;
mvi_EBattleship.y -= 1;
}
else if((mvi_EBattleship.x > mvi_PBattleship.x) && ((mvi_EBattleship.x + 31.7) < (mvi_PBattleship.x + 31.7)) && ((mvi_EBattleship.y + 195.8) < mvi_PBattleship.y) && (mvi_EBattleship.y < mvi_PBattleship.y)){
mvi_EBattleship.y += 1;
}
else if((mvi_EBattleship.x > mvi_PBattleship.x) && ((mvi_EBattleship.x + 31.7) < (mvi_PBattleship.x + 31.7)) && (mvi_EBattleship.y > (mvi_PBattleship.y + 195.8)) && ((mvi_EBattleship.y + 195.8) > (mvi_PBattleship.y + 195.8))){
mvi_EBattleship.y -= 1;
}
else if((mvi_EBattleship.y > mvi_PBattleship.y) && ((mvi_EBattleship.y + 195.8) < (mvi_PBattleship.y + 195.8)) && ((mvi_EBattleship.x + 31.7) < mvi_PBattleship.x) && (mvi_EBattleship.x < mvi_PBattleship.x)){
mvi_EBattleship.x += 1;
}
else if((mvi_EBattleship.y > mvi_PBattleship.y) && ((mvi_EBattleship.y + 195.8) < (mvi_PBattleship.y + 195.8)) && (mvi_EBattleship.x > (mvi_PBattleship.x + 31.7)) && ((mvi_EBattleship.x + 31.7) > (mvi_PBattleship.x + 31.7))){
mvi_EBattleship.x += 1;
}
}
所以,我的主要問題是:
1 )我應該使用什麼代碼來確保敵人追蹤玩家?
2)我該如何在玩家身上製造敵人的火力子彈?
3)有沒有辦法跟蹤兩艘敵方船隻之間的碰撞?
實際的代碼將是非常需要和讚賞,因爲這個項目預計將在明天完成。非常感謝您的幫助。
您正在尋求三個非常廣泛的問題的解決方案,然後去尋求這些問題的實際工作代碼。我不確定你會得到那個。 – Marty
@Marty「我相信你不會那麼做」會更精確。 – Vesper
既然你已經努力在你的問題中包含上下文和代碼,下面是部分答案。也就是說,Marty&Vesper是對的:爲三個鬆散相關的問題尋求代碼並不是獲得答案的最佳方式。 1)三角法可以幫助,徑向位置涼爽; 2)子彈可以衍生出敵人,其唯一的IA就是直射; 3)hitTestObject可能會有所幫助。 – Aralicia