2012-02-07 7 views
1

私はできる限り良く説明しようとしていますが、説明するのは本当に難しいです。私はAS3の初心者ですので、もしあなたが私を助けてくれるなら、私たちがそれを解決するまで私を助けてください。コード例を貼り付けてください。クラス間のAS3 HitTest?

メインタイムラインで私はこのように言っています。

ここでは、敵の2番目の敵を追加するタイマー!

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の内側に私はそれが移動するべきかと言うコード、どのような速さなどを持っていますが、どのように私はこれらの間のhitTestを作るのですか?私はこれのような敵や弾丸のクラスの中でそれをしようとしました。

私はどのように私はhitTest 2つのクラスを互いにagianstすることができますか?またはクラスのオブジェクトですか?

+0

Flixel(www.flixel.org)は、Flashでのゲームプログラミングを開始するための優れたツールです。たくさんのチュートリアルがあり、最初から作業するのと比べてすぐに一緒に働くゲームを手に入れることができます。あなたの最初のゲームにライブラリ/フレームワークを使用することを強くお勧めします。 –

答えて

2

これらの敵と弾丸を参照する必要があります。敵をやらないでください: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 
      } 
     } 
    } 
} 

Btwこれをかなり擬似コードでコンパイルしないでください。私はあなたが持っている質問に答えます。これにはチュートリアルもたくさんあります。ちょっとしたGoogle検索でより具体的なコードを手に入れることができます。

+0

こんにちは、コメントありがとうございます。しかし、私は敵の弾丸をメインタイムラインにスポーンする(作成する)。そして、私はEnemy.asとBulletを持っています。どこに移動し、どのようにヒットするべきなのかをコードに書いています。それはちょっと私の問題ですか?クラスを使ってコードを記述する方法は完全にはわかりません。しかし、これは実際に私が試合でやらなければならない最後のものです。私が考えている解決策は本当に自分自身をすることはできませんが、私はメインタイムライン上で弾丸を生成し、それらを配列にしてからEnemy.asリファレンスでこの配列をメインタイムライン上に作成するのですか?申し訳ありませんが悪い英語と多分非構造的なポスト... hah :) – user1133188

+0

場合は、イベントを追加することができますメインタイムラインにスポーンする場合、addEventListener(Event.AddedToStage、AddToArray); これを使用して、新しく作成した敵/弾丸をリストに追加することができます –

+0

ありがとう!私はまったくそれをしませんでしたが、私は配列を使用して、それは素晴らしい動作します! – user1133188