2016-12-23 13 views
0

Unity에서 충돌하는 물체를 빠르게 움직이는 방법을 다루는 방법에 대한 제안이있는 사람이 있습니까? 나는 모바일 용 브레이크 아웃 게임을 만들고 있는데, 패들이 매우 빠르게 움직이면 공과의 충돌을 놓친다는 것을 발견했다. 충돌을 연속 감지로 변경했지만 충돌로 패들과 같은 이상한 동작이 발생합니다.빠르게 움직이는 물체에 대한 유니티 충돌 충돌

나는 또한 dontgothrough 스크립트로 2D 콜리더에서 성공하지 못하게하려고 노력했다. 누구든지 어떤 제안이 있습니까?

답변

0

많은 게임 엔진에서 빠르게 움직이는 물체와 충돌하는 것이 문제입니다. 다음과 같은 몇 가지 방법으로 처리 할 수 ​​있습니다.

  1. 개체를 더 느리게 만드십시오.
  2. 개체를 더 크게 만듭니다.
  3. 중간 단계에서 충돌 업데이트.
  4. 개체 경로를 계산하고 다른 개체와 충돌하는 지점을 찾으십시오.

속도 제한을 적용하여 패들이 너무 빠르지 않게하는 것이 좋습니다. 외륜을 사용자의 손가락에 닿게하지만 즉각적으로 스냅하지 마십시오. 아마 이것도 잘 어울릴 것입니다.

패들을 넓힐 수도 있지만 게임 밸런스에 영향을 미칠 수 있습니다.

+0

감사합니다. 이러한 제안을 시도해 보겠습니다. 내 유일한 문제는 볼 속도가 시간이 지남에 따라 가끔씩 패들을 빠르게 움직일 수 있어야한다는 것입니다. – Kaz

0

강체에서 연속 감지를 시도하십시오.

그래도 여전히 실패하면 현재 위치와 이전 위치 사이에서 선점 (linecast)을 사용할 수 있습니다. 공이 패드보다 작 으면 각 모서리와 중심이됩니다. 성능에 대해 걱정하지 마세요, 5 라인 캐스팅은 관련성이 없습니다.

Vector3 prev; 
void Start(){ 
    prev = transform.position; 
} 
void Update(){ 
    Vector3 current = transform.position; 
    if(Physics.Linecast(prev, current)){ 
      // Collision 
    } 
    prev = current; 
} 
+0

감사합니다. 라인 캐스팅을 사용하는 방법을 잘 모르는 경우이 인스턴스에서 사용 방법의 예를들 수 있습니다. – Kaz

+0

코드에 대한 감사, 여기 초보자의 비트와 나는 여전히 잠재적으로 빠른 움직이는 물체가 내 외륜으로 이것 주위에 내 머리를 감쌀 수 없습니다. 이 코드가 외륜에 붙어 있는지, 그리고 if 문 (colllision)의 본문이 OnCollisionEnter2D 메서드를 호출 할 것으로 짐작됩니다. – Kaz