AS3 HitTest между классами? - PullRequest
       23

AS3 HitTest между классами?

1 голос
/ 08 февраля 2012

Я попытаюсь объяснить как можно лучше, но это действительно сложно объяснить.Я новичок в AS3, поэтому, если вы собираетесь мне помочь, пожалуйста, помогите мне, пока мы не решим его.Пожалуйста, вставьте примеры кода вместо того, чтобы просто сказать, как я должен делать.

Хорошо.На основной временной шкале я говорю так:

ТАЙМЕР, ЧТО ДОБАВЛЯЕТ ВРАГА КАЖДУЮ ВТОРОЙ!

var Enemy:MovieClip = new Enemy();
addChild(Enemy);
Enemy.x = 200;
Enemy.y = 200;

ДРУГОЕ ВРЕМЯ, КОТОРОЕ ДОБАВЛЯЕТ ПУЛЬТЫ КАЖДЫЕ .5 СЕКУНД!

var Bullet:MovieClip = new Bullet();
addChild(Enemy);
Bullet.x = 400;
Bullet.y = 400;

А затем внутри Enemy.as и Bullet.as у меня есть код, который говорит, как он должен двигаться, с какой скоростью и т. Д. Но как мне сделать между ними хит-тест?Я пытался сделать это внутри класса врага или пули, как это.

Итак, я просто спрашиваю, как я могу ударить два класса друг против друга?Или объект класса?

1 Ответ

2 голосов
/ 08 февраля 2012

Тебе нужно хранить ссылки на этих врагов и патроны.Не делайте вар врага: MovieClip = new Enemy ();вместо этого сделайте это.

var myEnemyList:Array = new Array();
var myBulletList:Array = new Array();


function Init():void{
    addEventListener(Event.OnEnterFrame, Update);
}

function Update(){
    //this will create a bullet and an enemy at every frame

    //Create a new enemy
    var enemy:Enemy = new Enemy();
    myEnemyList.push(enemy); //add enemy to the array

    //Create a new bullet
    var enemy:Bullet = new Bullet();
    myBulletlist.push(bullet);


    //Update the bullets
    for(var i:int=0; i < myBulletlist.length; i++){
        myBulletlist[i].Update(); //you must implement this function inside your class bullet
    }

    //Update the enemies
    for(var i:int=0; i < myEnemyList.length; i++){
        myEnemyListt[i].Update(); //you must implement this function inside your class enemy
    }

    CheckForCollision();
}


function CheckForCollision(){
    for(var i:int=0; i < myEnemyList.length; i++){
        for(var j:int =0; j < myBulletList.length; j++){
            if( myEnemyList[i].collidesWith(myBulletList[j]) ){
                //Collision
            }
        }
    }
}

Кстати, не пытайтесь скомпилировать его в значительной степени псевдокод.Я отвечу на ваши вопросы.В этом разделе также много учебников, и небольшой поиск в Google поможет вам получить более конкретный код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...