AS3中的AI问题

时间:2014-06-06 00:10:02

标签: actionscript-3 flash-cs3

我正在建造一艘战列舰模拟器,在这种模拟器中,您可以驾驶战舰完成某个目标,同时抵御敌舰。所说的敌舰应该有一种原始人工智能的形式,可以让它跟踪你的船的位置,并试图射击它。

我遇到的问题是,我不能完全确定如何根据位置为一组敌舰编码来磨练玩家的船。我已多次尝试让敌舰移动,但无济于事。

附件是我最近对敌舰运动的编码尝试(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)有没有办法跟踪两艘敌舰之间的碰撞?

实际代码将非常需要和赞赏,因为该项目预计明天即将完成。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我只会回答第一个问题,这个问题对我所看到的一定很重要。

要控制NPC(非玩家角色),您可以使用所谓的&#34;转向行为&#34; here as3的非常好的指南。

不要重新发明轮子!