0
장면을 걷는 모델 (플레이어가 아님)을 범프하지 않으면 스크립트가 정상적으로 작동합니다.
그러나 캐릭터 컨트롤러로 모델을 범프하면 모델은 대기 애니메이션 상태에 도달하면 계속 움직입니다.Unity transform.translate never stops
왜 그런가요? 어떻게 해결할 수 있습니까?
public class MoveMan2 : MonoBehaviour
{
public float speed = 0.85f;
public Animator anim;
void Start()
{
anim = GetComponent<Animator>();
InvokeRepeating("SetWalkMode",5.0f,20.0f);
}
void SetWalkMode()
{
anim.Play("SkitsWalk", -1, 0f);
}
void Update()
{
if (anim.GetCurrentAnimatorStateInfo(0).IsName("SkitsWalk"))
{
Debug.Log("Skits walking");
transform.Translate(0, 0, speed * Time.deltaTime);
}
if (anim.GetCurrentAnimatorStateInfo(0).IsName("Wait"))
{
Debug.Log("Waiting");
}
}
}
개체에 리지드 바디가 부착되어 있습니까? 물리적 상호 작용은 코드에서 객체를 움직이지 않아도 계속 적용됩니다. – Serlite
시도해 보셨습니까? 'Translate'를'transform.Translate (0, 0, speed * Time.deltaTime, Camera.main.transform);'로 변경하십시오. – Hristo
강체를 제거하고 올바르게 작동합니다. Serlite에게 감사드립니다! – CsharpBeginner