簡體   English   中英

AS3中的AI出現問題

[英]Trouble with AI in AS3

我正在制作一艘戰艦模擬器,您可以在其中導航一艘戰艦以完成特定目標,同時抵御敵艦。 所述敵方艦只應具有原始AI的形式,以使其能夠跟蹤您艦只的位置並嘗試向其射擊。

我遇到的問題是,我不完全確定如何根據位置將一組敵艦編碼為玩家的艦船。 我曾多次嘗試使敵艦前進,但無濟於事。

隨附的是我最近對敵艦移動的編碼嘗試(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)有沒有辦法追蹤兩艘敵艦之間的碰撞?

由於預計該項目將在明天接近完成,因此非常需要並希望有實際的代碼。 非常感謝您的幫助。

我將僅回答第一個問題,從我所見,這是必不可少的。

要控制NPC(非玩家角色),您可以使用所謂的“轉向行為”, 是as3的很好指南。

不要重新發明輪子!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM