2013-02-06 2 views

답변

2

나는 당신이 필요하다고 생각합니다. Physics가 작동하는 방식에 대해 읽은 다음 Trigger-Events 및 Colission 감지가 처리되는 방법에 대해 읽어보십시오.

여기서 this을 읽고 this을 읽으십시오. 첫 번째는 Unity 엔진이 작동하는 방식에 대한 통찰력을 제공합니다. 후자는 충돌 감지를 수행하는 방법에 대한 비디오 자습서를 제공합니다.

당신이 그렇게 그냥 코드를 원하는하지 않으려면

, 나는 빠른 구글에 this을 발견 :

var crashSound : AudioClip; // set this to your sound in the inspector function 
OnCollisionEnter (collision : Collision) {  
    // next line requires an AudioSource component on this gameobject5.  
    audio.PlayOneShot(crashSound); 
} 
+0

답장을 보내 주셔서 감사합니다. 사실 저는 큐브와 같은 간단한 개체에 물리 칠을 적용 할 수 있습니다.하지만 이제는 내 fbx 파일 인 애니메이션에 물리를 적용하려고합니다.이 작업을 수행 할 수 없습니다. 메쉬 콜 리더, rigidbody 중력을 fbx 파일에 추가했습니다. 나는 그 아래에 지형 충돌이있는 지형을 가지고 있지만, 재생 버튼을 누르면 내 캐릭터가 지형을 넘어 서서 쓰러 질 것입니다.이게 뭔지 모르겠습니다 ... 당신이 보낸 모든 링크를 이미 읽었습니다. ... –

+0

내가 이걸 발견했거나 관련이 있을지도 모른다. http://answers.unity3d.com/questions/47095/mesh-colliders-not-working-on-fbx-imported-buildin.html – Joetjah

+0

당신은 Collider를 사용해야 할 것입니다. 가장 일반적인 것은 당신이 움직일 수없는 캡슐입니다. 콜리 전 (colliders)은 애니메이션 오브젝트에서 메쉬 콜리 더가 잘 작동하지 않도록합니다. 네가 상자를 가지고 있고, 같은 개념인데. – Shredder2500

0

당신은 FBX 메시에 MeshCollider를 추가 할 수 있습니다. 어쨌든 이것은 성능상의 문제를 일으킬 수 있기 때문에 좋은 생각이 아닙니다.

각 캐릭터에 대해 빈 게임 객체를 만들고 fbx 애니메이션 및 간단한 충돌기 (일부 큐브, 구, 캡슐 등)를 추가 할 수 있습니다. 그런 다음 스크립트를 사용하면 부모 개체에 첨부하고 전체 개체를 처리합니다.

펀치 동작이나 걷어차 기처럼 애니메이션의 특정 위치에서 충돌자가 이동하도록하려면 3D 애니메이터/모델러에게 해당 점에 간단한 메쉬를 추가하도록 요청할 수 있습니다. 예를 들어 하나의 펀치에있는 구형이 애니메이션과 함께 움직입니다. 그런 다음 Unity에서 구의 메쉬를 숨기고 메쉬 콜 리더를 추가합니다. :)

희망이 있습니다.

0

대부분의 경우 객체에 애니메이션을 적용하면 물리 반응이 느슨해집니다. 날 믿지 않니? 여기를 참조하십시오 : http://www.youtube.com/watch?v=oINKQUJZc1Q

분명히 애니메이션은 Unity 물리학의 일부가 아닙니다. 그것에 대해 생각해보십시오 ... 연합 물리학은 뉴턴과 친구들의 법칙에 따라 대상의 위치와 회전을 결정합니다. 이러한 법칙이 키 프레임 임의 애니메이션에 어떻게 부합 할 수 있다고 생각하십니까? 그들은 할 수 없습니다 : 그러므로 당신이 시도 할 때 얻는 미친 결과.

어떻게 해결할 수 있습니까? 애니메이션에도 Unity 물리학을 사용하십시오 : rigidbody.AddForce을 마스터하고 다른 모든 것들은 here을 설명하십시오.

항상 물리와 애니메이션을 분리하여 보관할 수 있습니다. That's how you get out of trouble.

정말로 알고 싶다면 다음은 애니메이션으로 물리를 중재하는 방법에 대한 나의 개인적인 경험입니다. 때때로

, 심지어 치명적인 결과를 초래할 수 물리학에 간단한 파라미터 애니메이션 (또는 사용자의 입력을 중개하는 스크립트)을 서로 결합 . 나는 우주선을 만들었습니다 : 사용자 마우스 ("블록 강체 회전"이라고 표시 함)에 의한 회전 컨트롤러, 방향 및 물리에 의한 속도. 상자 충돌 자 안에있었습니다. 몇도 각도로 향한 입방체가 평평한지면과 만나는 경우 이 발생한다고 상상해보십시오. 은 넘어져서 얼굴 중 하나가 땅에 완전히 찰 때까지 회전해야합니다. 이것은 신체의 회전을 과 물리학 적 상호 작용을 차단했기 때문에 불가능했습니다. 그 결과 상자는 에 평평 해지기를 원했으나 할 수 없었습니다.이 긴장감은 마침내 그것이 앞으로 나아갈 수있게 만들었습니다. : 영원히 현실 세계에서는 불가능한 것이 있습니다. 이 오류를 조정하려면 나는 사용자 입력에 에 따라 동적으로 "블록 회전"매개 변수를 변경했습니다. 선박이 이동함에 따라 회전은 에 의해 제어되지만 사용자가 배를 제어하는 ​​것을 중지하자마자 회전 매개 변수는 물리 엔진에 다시 제공됩니다. 또 다른 해결 방법은 레이더를 콜라이더에 던져서 땅이 근처에 있는지 확인하고 우주선이 움직이지 않으면 충돌을 피하십시오 (이것이 헤일로 컴뱃 Evolved의 밴시가 제어되는 방법입니다). 비디오 게임을 할 때 항상 사용자 입력이 이 물리 엔진에 중재되는 방식을 살펴보십시오. 정상 플레이어가 정상적으로 알지 못하는 것을 발견 할 수 있습니다.

+0

btw, 작동하지 않는 충돌 자에 대한 다른 원인이있을 수도 있습니다. 이것은 당신의 움직이는 물체가 물리학에 따라 행동 할 것을 기대할 때 염두에 두어야 할 것입니다. – Saturnix

+0

[animatePhysics] (http://docs.unity3d.com/Documentation/ScriptReference/Animation-animatePhysics.html)를 사용해보십시오. 속도가 그렇게 높지 않으면 움직이는 캐릭터에 문제가 없었습니다. – Kay

관련 문제