2012-02-07 3 views
1

내가 할 수있는만큼 잘 설명하려고 노력할 것이지만, 설명하기가 정말 어렵다. 나는 AS3에 익숙하지 않으므로 나를 도울 수 있다면 우리가 해결할 때까지 도와주세요. 어떻게해야하는지 말하기보다는 코드 예제를 붙여 넣으십시오.클래스 간 AS3 HitTest?

확인. 메인 타임 라인에서 이와 같이 말하고 있습니다.

여기에 적을 두 번째로 추가하는 타이머가 있습니다.

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는 어떻게해야합니까? 나는 적과 총알 클래스 안에서 이것을하려고했습니다.

그래서 나는 어떻게 할 수 있는지 물어 보았습니다. 두 클래스가 서로에 대해 대화를 테스트 했습니까? 또는 클래스의 객체?

+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을 가졌습니다. 나는 그들이 어떻게 움직여야하고 무엇을 치어야할지 코드를 작성하는 곳으로 테스트합니다. 그게 내 문제 야? 클래스 작성법을 완전히 설명하지는 않습니다. 그러나 이것은 실제로 제가 게임에서해야 할 마지막 것입니다. 내가 생각해 보았지만 실제로 할 수없는 해결책은 내가 메인 타임 라인에서 Bullet을 스폰하고 그것을 배열로 만든 다음 Enemy.as에서 메인 타임 라인에이 배열을 참조하는 것입니다. 나쁜 영어와 어쩌면 비 구조적인 게시물을 유감스럽게 생각합니다 ... hah :) – user1133188

+0

메인 타임 라인에 스폰하면 이벤트 추가 가능, addEventListener (Event.AddedToStage, AddToArray); 새로 만든 적/글 머리 기호를 목록에 추가 할 때 사용할 수 있습니다 –

+0

고마워요! Id'nt는 정확하게 그것을한다. 그러나 나는 배열을 사용했다. 그리고 그것은 크다! – user1133188