Проблема со скриптом c # для игрока, лезущего в единство

1

Я пытаюсь заставить игрока подняться по лестнице. (2D-игра)

Я использовал этот код для этого,

void OnTriggerEnter2D(Collider2D collider){
    if(collider.gameObject.tag=="Ladder"){
        _canClimb = true;
        _anim.SetBool("Climb",true);
    }
}

void OnTriggerExit2D(Collider2D collider){
    if(collider.gameObject.tag=="Ladder"){
        _canClimb = false;
        _anim.SetBool("Climb",false);
    }
}

В обновлении(),

if(Input.GetKey(KeyCode.UpArrow) && _canClimb == true){
    transform.position = Vector3.Lerp(transform.position,ladderTop.transform.position,Time.deltaTime);
}

Я поставил дочерний игровой объект на лестницу, чтобы получить положение верхней части лестницы.

Но когда игрок прыгает и попадает с коробчатым коллайдером лестницы, я вижу анимацию восхождения. И после этого игрок снова падает на землю. Он не движется вверх. В чем причина этого?

Теги:
unity3d

1 ответ

0

Теперь он работает так, как я ожидал. Вот код,

if(Input.GetKey(KeyCode.UpArrow) && _canClimb == true){
        _myRigidBody.isKinematic = true;
        transform.position = Vector3.Lerp(transform.position,ladderTop.transform.position,Time.deltaTime);
}

Я просто добавил эту строку, и она отлично работает:

_myRigidBody.isKinematic = true;

Rigidbody.isKinematic

Если isKinematic включен, Силы, столкновения или суставы больше не будут влиять на жесткое тело.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню