2011-04-22 3 views
-1

나는 타워 방어 게임을 만들고 있으며 총알을 쏘는 타워를 만들고 총알이 타격을당한 모든 적들이 모두 망가졌습니다. 총알이 여러 대를 해칠 수 있습니다. 총알이 적과 충돌하면 내 문제가 감지됩니다.타워 국방 문제

지금 당장은 배열에 적을 가지고 있습니다. 다른 타워의 경우 적군이 범위 내에 있으면 타워가 발사되고 원래의 목표물에 도달하면 해당 대상이 손상됩니다.

내가 만들고 싶은 탑에 대해 매번 최대 범위의 탄환을 발사 할 것이고 최종 목적지까지 오는 모든 유닛에 손상을 입힐 필요가 있습니다.

누구나 최선의 방법에 대한 아이디어가 있습니까? 나는 잠시 동안 그것을 생각하고 있었고, 유용한 것을 찾지 못했습니다.

+1

http://gamedev.stackexchange.com/이에게 더 나은 장소가 될 수 있습니다. – Robb

+0

gamedev가 아마도 이보다 더 좋은 곳이라는 데 동의합니다 ... 단지 궁금한 점이 있습니다. 단일 히트에 대해 충돌 감지를 어떻게 수행하고 있습니까? 나는 당신이 이것을 확장 할 수 있고 "총알"이 첫 번째 적을 넘어서 더 많은 것들을 공격 할 수 있다고 생각할 것입니다. –

+0

오, 나는 gamedev가 있다는 것을 몰랐습니다. 스택 교환, 나는 거기에서도 물을 것입니다. 다른 타워의 경우 총알에 어디로 가야하는지 알려주고 hitTestPoint() 함수를 사용합니다. 이 타워의 경우 hitTestObject() 함수를 사용하고 있습니다. – Sean

답변

0

포탑을 조준 할 위치를 식별하거나 선상의 표적이 맞았는지 확인하는 방법은 무엇입니까?

예를 들어, 줄을 만드는 간단한 방법은 다음과 같습니다. 터렛은 범위에서 첫 번째 적을 목표로 삼고 터렛 범위의 길이 동안 적을 통해 터렛에서 연장되는 선을 그립니다. 이 경우, 문제는 현재의 적들이 라인의 수용 가능한 범위 내에 있는지 여부를 결정하는 것으로 이어집니다.

선을 그리는 대신 문제가 발생하면 문제의 어떤 부분이 특히 문제인지 명확히 알 수 있습니다.

+0

사실, 나는 비슷한 것을 한 것뿐입니다. 총알이 최대 범위에 도달하면 총알이 발사 된 곳으로 그 지점부터 줄을 그립니다. 다음으로, 내가 작성한 라인이있는 적의 배열 hitTestObject를 반복합니다. 적중이되면 적에게 피해를 입 힙니다. 완벽하지는 않지만 적을 공격 할 때 더 많은 것을 실시간으로보고 싶습니다.하지만 지금까지 내가 생각할 수있는 최선의 방법입니다. 때로는 실제로 적과 충돌하지 않는 적을 때리는 것처럼 보입니다. – Sean

+0

총알이 최대 범위에 도달했을 때, 너무 늦게 선을 그릴 때, 계속해서 연속적으로 날아갈 때해야합니다. – alxx

0

이 작업을 수행하는 가장 좋은 방법은 화재 이벤트에 글 머리 기호 개체를 만드는 것입니다. 총알이 추적해야하는 몇 가지 사항이 있습니다.

  • 속도
  • 거리
  • 적 그 속도 각 프레임에 의해 총알을 이동

을 명중 여행했다. 거리가 타워의 최대 범위보다 큰지 확인하십시오. 그렇다면 파괴하십시오. 적이 적중하지 않은 경우에만 적과 충돌 이벤트를 생성하십시오.

0

이 질문은 매우 모호합니다. 일반적으로

당신이 원하는 :

각 프레임 업데이트 총알을 만들 수는 위치

의 그래서 총알을 죽이는 경우는, 타워에서 최대 거리를 칠 경우

체크

총알이 당신의 배열에있는 적이 맞았는지 확인하십시오.

적에게 폭발이 가해 지거나 어떤 종류의 시각적 신호와 효과를 발휘하고 데미지를 입히십시오.

- 단 한번의 적중 만 허용합니다 - 총알에서 추적하여 수행 할 수 있습니다. - 즉 적의 배열을 가지고있다.

이러한 항목을 각각 코딩하는 방법을 알고 있습니까?

+0

예, 내 주요 문제는 적이 맞았을 때기를 기는 방법이었습니다. 나는 그들이 당신이 말한 것처럼 맞을 경우 배열로 저장하려고 할 것입니다. – Sean

+0

예, 총알이 여러 개의 총알이 같은 적을 공격 할 수 있으므로 총알에서 처리하는 것이 중요합니다. 그래서 총알이 맞은 적을 알고 싶습니다. – prototypical

0

hittestpoint 방법을 사용하십시오.배열에 대한

if(enemy.hitTestPoint(bullet.x,buttet.y) { 
    dosomething() 
} 

:

for (var i:int = 0;i<enemyArray.lenght;i++) 
if(enemyArray[i].hitTestPoint(bullet.x,buttet.y) { 
    dosomething() 
} 
관련 문제