2012-10-18 2 views
3

나는 총알처럼 작동하는 하나의 스프라이트와 다중 비트 맵을 가지고 있습니다. 이제 문제는 제가 총알이 정말 빨라지지만 다시 충돌 감지 기능에 문제가 있다는 것입니다. 작동 방식은 모든 프레임에서 적과 총알 모두에서 Rect를 만들고 겹치는 부분을 확인하는 것입니다.안드로이드 충돌 감지 정확도

총알이 정말 빨리 지나가는 경우 점대 점에서 "점프"하는 것과 같습니다. 이는 적이 작고 총알이 적을 뛰어 넘어 "눈에 띄지 않을"것을 의미합니다.

내가 알고 싶은 것은 2 개의 움직이는 물체 사이에 충돌이 일어나거나 적의 탄도에 있는지를 확인하는 것과 같은 감지 방법이있는 경우입니다.

적의 배열을 반복하면서 충돌 감지를 만들었습니다. 루프 내에서 모든 탄환을 반복 한 다음 두 개의 rect를 만들고 각각의 적과 총알에 대해 Rect.intersects와의 충돌을 확인합니다.

총알이 기능에 의해 하나의 고정 점과 터치 입력에 의해 측정하고 계산 표제어

public void calcPoint(float x, float y) { 
    double alfa = Math.atan(x/y);//x and y are inputs 
    bulletPointX = (float) Math.sin(alfa) * speed; 
    bulletPointY = (float) Math.cos(alfa) * speed; 
} 

내가 가진 어떤 생각이 그것을 해결하기 위해 내가 그것을 어떻게 일부 adivice 싶습니다 어떻게 예를 들어 ...

+0

총알의 움직임을합니까 : 나는에 대한 검색을 수행 기초로 할 수 있지만 자세한 내용은 준 링크 직선으로? – Magicode

답변

1

가장 쉬운 방법은 predictive collision detection.입니다. 기본적으로 운동을 시간 세그먼트로 나누고 각 세그먼트를 확인합니다. 수천 개의 객체가 움직이는 경우 효율성이 떨어질 수 있지만 대부분의 경우 제대로 작동합니다.

몇 가지 이름으로도 알려져 있습니다.

  • 프레임 독립 충돌 감지
  • 연속 충돌 감지
  • 스윕 테스트
+0

고마워, 나는 내가 현재 가지고있는 나의 지체 문제에 대한 해결책을 찾은 후에 이것을 조사 할 것이라고 생각한다. –