:)하십시오 시간 :(
도움말, 유니티는 사장님 (우리에게 힘을 통해 또는 명시 적으로 자신의 상태를 설정하여 하나 rigidbodies와 상호 작용하는 옵션을 제공합니다 속도, 회전, 가속). 좋은 일반적인 규칙은 객체가 이러한 방식 중 하나에서만 영향을 미쳐야한다는 것입니다. 명시 적으로 또는 물리 엔진을 통해 작동되는 객체는 여기에서 실행 한 것처럼 "이상한"동작을 생성 할 수 있습니다!
당신의 제안 된 솔루션에서 당신은 떨어지는 물체에 강요 (점프를 만들기 위해)와 명백한 세트 (ridgidbody를 고정 된 속도로 떨어 뜨리기 위해)를합니다. 만약 당신이 당신의 객체 물리학을 가능하게한다면, 그것은 또한 힘에 의해 작동 될 것입니다! 우리가 가능한 "최고의"Unity 스크립트를 작성하는 데 관심이 있다면 아마도 하나의 시스템 만 선택해야합니다 (강제 또는 명시 적).
몇 가지 옵션이 있습니다.
1) 나는 이것이 당신이 가고 싶어 할 경로라고 기대합니다.
떨어지는 물체를 Unity 물리 엔진에서 관리하려면 점프 명령이 좋아 보이지만 (물리 개체에 힘을 추가하는 것이 좋기 때문에) 낙하 속도를 명시 적으로 설정하면 우리 패러다임이 깨집니다 (지금 우리는 값을 설정하고 힘을 적용하여 대상과 상호 작용).
좋은 소식이지만, 우리는 우리의 떨어지는 물체에 대해 "밀고"함으로써 우리가 원하는 모든 떨어지는 행동을 유발할 수 있습니다. 우리는 중력의 더 풀을 중화하기 위해이 같은 일을 할 수있는 특정 임계 값을지나 가속에서 우리의 객체를 중지하려면 다음
if(rigidbody.velocity.y >= max_speed)
rigidbody.AddForce(new Vector3(0.0f,-1*Physics.gravity,0.0f));
이것은 물론 아닌 완벽한 솔루션을. 이 작업을 수행하면 개체의 최대 속도에 약간의 불일치가 생깁니다. 그러나 바라건대 그것은 당신을 올바른 길로 인도하고 당신의 취향에 맞출 수 있습니다. (어떤 속도에 도달 한 후에도 물체의 중력을 "끄는"것도 고려해보십시오. 무엇이든지 당신에게 가장 자연스럽고, 정직하게 느껴질 것입니다. 당신이 명백한 속성을 설정하지 않는 한 (당신은 여전히 볼 수 있습니다!) 당신은 훌륭하게 행동하고 있습니다.)
2) 유니티의 물리 엔진이 당신의 객체에 작용할 필요가 없다면 (케이스와 같이 들리지 않는다) 점프 명령을 사용하여 떨어지는 객체의 동작을 명시 적으로 실행할 수 있습니다. 객체의 y 속도. 그러나 일단이 길을 내려 가면 개체가 Unity 물리 엔진을 통해서조차도 작동하지 않는 것이 좋습니다.
3) 옵션 3은 "규칙"을 무시하고 게시물에서 제공 한 솔루션을 활용하는 것입니다."작업"을하기 위해선, 당신이 할 일은 볼의 속도를 수표로 감싸서 볼이 허용 할 수있는 것보다 빠르게 떨어지는 지 확인하고 명시된 속도 만 적용하면됩니다.
활성화, 또는 귀하의 개체에 중력을 시뮬레이션 :
if(ridgidbody.velocity.y < -500)
rigidbody.velocity = new Vector3(rigidbody.velocity.x, -500, rigidbody.velocity.z);
그런 다음 점핑, 정상적인 떨어지는 및 충돌을 관리하는 물리학을 사용하십시오.
아마도 "가장 빠른"해결책 일 것입니다. 그러나 게임이 충분히 복잡해지면 다시 물을 to 수 있습니다. 도움이
희망,
-Zach