2017-03-13 3 views
0

나는 구/석 (눈덩이)을 가지고 있습니다. 눈이 굴러 가면 자랍니다 (나는 그것을 스케일하고 질량을 더합니다).구의 크기를 조절하면 겹치는 충돌이 발생합니다.

문제점 : 나는 이상한 행동을하지만, 내 공은 굴러 가지 만 때로는 "뛰기"(또는 튀어 오름).

공이 커지고 땅과 겹쳐 큰 충돌을 일으키는 것 같습니다.

나는 그것이 오프셋 ( Ball->SetAllPhysicsPosition(Ball->RelativeLocation + FVector(0, 0, newRadius-pastRadius);와 위치의 변경을 시도,하지만 난 여전히 같은 문제가 있습니다. 큰 있지만) 어떤 크기와 오프셋 하드 코딩.

와 (그것은 "작품"당신은이겠습니까 이 문제를 해결하는 방법에 대한 생각?

이 내가 공을 더 얻을 수 있도록하는 데 사용하는 코드입니다. 나는 주위를 이동하는 토크를 추가 할 수 있습니다.

void ASnowballBall::NotifyHit(...) 
{ 
    float resizeValue = 0.0f; 

    //If the snowball collides with snow, it grows 
    if (Other->GetName().StartsWith("Snow", ESearchCase::IgnoreCase) && Ball->BodyInstance.GetUnrealWorldVelocity().Size() > 50.0f) 
    { 
     // Max size based on mass 
     if (Ball->GetMass() < 10000.0f){ 
      resizeValue = (20.0f/Ball->GetMass())); 
      resizeValue = FMath::Clamp(resizeValue, 0.0f, 0.003f); 

      Ball->SetRelativeScale3D(Ball->RelativeScale3D + resizeValue); 
      Ball->SetMassScale("None", Ball->BodyInstance.MassScale); 
     } 

    } 

답변

1

를 반경을 변경, 규모를 변경하지 마십시오 . 그러면 새로운 반경을 알기 때문에 라인 trac을 할 수 있습니다. e를 볼 센터에서지면까지 똑바로 내리고 볼을 라인 거리와 새로운 반지름의 차이만큼 위로 (또는 아래로) 움직이십시오.

또한 물리학이 게임에서 볼에 중요 할 경우 액터 속성에서 CCD를 선택하여 프레임 당 더 나은 충돌 감지를 가능하게하십시오. 그러나 이것은 비싸지 만, 게임을 여러 번 프로 프로파일 할 수 있도록하십시오.

관련 문제