2010-02-16 4 views
0

그래서 저는 현재 두 개의 클래스 인 Laser 클래스 (동영상 클립에 해당)와 Enemy 클래스를 다루고 있습니다. 적 등급은 여러 적의 영화 클립에 연결됩니다. 생성되면 레이저 클래스의 인스턴스화와 충돌을 찾습니다. 여기 내가 문제가있는 곳입니다. Enemy 클래스가 인스턴스화 될 때 Laser 클래스가 충돌 감지 목적으로 전달 될 수 있도록 일을하고 싶습니다. 나는 이것을 할 길을 찾을 수없는 것 같습니다.한 클래스의 인스턴스를 다른 클래스로 전달하려고합니다. 문제가 생겼을 때

문제는 Laser 클래스가 자신을 전달할 Enemy 클래스의 특정 인스턴스화를 필요로한다는 것입니다. 한 번에 여러 개의 Enemy 클래스를 다루므로 Laser 클래스가 올바른 클래스로 전달할 수 있어야합니다.

이 중 어느 것도 의미가없는 경우

, 그냥 언급과 좀 더 명확하게하려고합니다. 그는 레이저에 의해 명중 때

+1

. 내게 수수께끼 같은 것은 당신이 적 (Enemy)이 인스턴스화 될 때만 충돌을 체크하고 있다는 것입니다. – iandisme

+0

인스턴스화 된 객체와 클래스의 차이점을 실제로 얻지 못하는 것 같습니다. 나는 소개 객체 지향 프로그래밍 자료를 읽을 것을 제안한다. –

+0

iandisme에 대한 응답으로 : 예, 적의 클래스가 인스턴스화되면 레이저 클래스와의 충돌을 검사합니다. 플레이어는 레이저를 발사하는 고정식 포탑을 제어하고 있습니다. 적군이이 레이저와 충돌을 감지하면 건강을 잃을 것입니다. Cory : I do not understand에 대한 응답으로. movieclip에 연결된 actionscript 파일을 movieclip에 연결 한 경우 해당 클래스가 인스턴스화되지 않습니까? – Miles

답변

1

이상적으로는 게임에서 충돌을 감지하는 데 큰 루프가 필요합니다. 그래서 아마도 레이저 빔이 생성 될 때, 배열로 밀어 다른 배열도 원수가/당신 충돌 ​​루프에서 다음

는, 당신은 것입니다 : 물론

//call this function on every ENTER_FRAME 
public function updateCollisions():void 

//TODO other collisions 

    for (var i:int = 0; i < laserArray.length;i++) 
    { 
     for (var k:int = 0; k < enemiesArray.length;k++) 
     { 
       if (laser[i].hitTestObject(enemiesArray[k])) 
       { 
       enemiesArray[k].health-=10; 
       } 

     } 

    } 
} 

이 충돌을 처리 할 때 픽셀 히트 테스트, 터널링, 공간 파티셔닝 당 고려해야 할 사항이 많이 있지만 나중에 필요할 때만 남겨 둘 수 있습니다.

0

적 클래스는 사용자 정의 이벤트를 전달합니다. 그런 다음 이벤트 (예 : enemyEvent.DAMAGE_TAKEN)를 청취하고 적의 피해를 처리하는 기능을 실행하는 eventlistener를 좋아할 위치를 설정할 수 있습니다. 레이저 클래스를 적 클래스에 건네주는 유선 단계가 필요 없으므로 나에게 아무런 의미가 없습니다.

+0

알았어.하지만 충돌을 탐지하기 시작하려면 적 클래스에 레이저 클래스를 전달해야한다. 나머지는 모두 쉽습니다. – Miles

1

이 문제를 올바르게 이해하고 있다면 'Laser'(L)와 Enemy (E)의 두 가지 클래스가 있으며 'E'의 해당 인스턴스에 'L'인스턴스를 전달하려고합니다. 이제 말했듯이

'문제는 Laser 클래스가 자신을 전달할 Enemy 클래스의 특정 인스턴스를 필요로한다는 것입니다. 동시에 여러 개의 Enemy 클래스를 다루기 때문에 Laser 클래스가 올바른 클래스로 전달할 수 있다는 것이 중요합니다. '

그래서 L이 인스턴스화 된 Enemy 개체의 배열에 액세스 할 수있는 주 클래스이고 이제는이 Enemy 개체에서 L이 어떻게 보이거나 액세스 가능하게되기를 바랍니다. 그런 경우에는 setter 함수를 통해 인스턴스화 될 수있는 E 유형의 변수를 간단히 가질 수 있습니다. 예 :

============================================== ================================

// 주요 레이저 클래스

기능 과정() 공백

{

VAR의 myEnemy : E = getDesiredEnemyInstance();

myEnemy.레이저 =이;

}

// 내부 클래스 E

// 일부 코드 개인 var에 _laser : 레이저;

// 일부 코드

공용 기능 설정 레이저 (L : 레이저) 보이드

{

this._laser = 1;

}

========================================= ====================

이 접근성을 확인한 후에는 항상 antpaw에서 제안한대로 이러한 클래스를 처리합니다. 여기에 '메타 데이터'태그를 사용해야 할 수도 있습니다. 도움이되기를 바랍니다. 문제 정의에 대해 아직 명확하지 않은 경우 수정 해주십시오. 게임 및 프레임 워크에 대한 약간의 배경 도움이 될

소원, Ashine

관련 문제