2017-11-05 3 views
0

트리거와 충돌하는 동안 힘을 변경하려고한다고 가정합니다. 새로운 힘을 추가 할 때 고정 된 업데이트 클래스에서 이전의 힘을 취소해야합니다. 충돌 클래스에서 고정 된 업데이트 클래스의 힘을 일시적으로 비활성화하는 방법은 무엇입니까? 충돌 클래스에 rb.Sleep()을 추가하려고 시도했지만 플레이어가 멈추었습니다. 어떤 아이디어? 감사.유니티가 충돌로 다른 클래스 변경

void FixedUpdate() 
{ 
    rb.AddForce(Vector3.down * gravity); 

private void OnTriggerStay(UnityEngine.Collider collision) 
{ 

    if (collision.gameObject.name == "Trigger") 
    { 

     rb.AddForce(Vector3.forward * gravity) 
    } 
} 

답변

0

두 가지 경우가있을 수 있으므로 명확하지 않습니다. 당신은 FixedUpdate에 주어진 힘을 가지고 있고, 충돌시 새로운 힘을주고 "일정한"힘을 멈추고 싶습니다.

void FixedUpdate(){ 
    if(condition==false){return;} 
    rb.AddForce(gravity); 
} 

그런 다음 해당 조건을 토글합니다.

하지만 업데이트 할 때 적용하는 힘은 단지 중력 일뿐입니다.

그래서 rb.useGravity를 사용하고 설정/해제 할 수 있습니다.

0

정확히 무엇을 말하고 싶지는 않지만, 현재 가지고있는 것은 현재의 Yforce가 추가되기 전에 추가 된 Xforce를 마이너스하는 것입니다. 그렇다면 변수를 사용하여 Xforce 값을 유지하고 (이전에는 빼기) Xforce 값을 빼고 Yforce를 추가 할 때 먼저 빼기를 사용할 수 있습니다.

Xforce = Your_Force_to_be_added; 

if (condition) 
{ 
    minus Xforce first 

    add Yforce here 
} 
관련 문제