Я пытаюсь заставить игрока подняться по лестнице. (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);
}
Я поставил дочерний игровой объект на лестницу, чтобы получить положение верхней части лестницы.
Но когда игрок прыгает и попадает с коробчатым коллайдером лестницы, я вижу анимацию восхождения. И после этого игрок снова падает на землю. Он не движется вверх. В чем причина этого?
Теперь он работает так, как я ожидал. Вот код,
if(Input.GetKey(KeyCode.UpArrow) && _canClimb == true){
_myRigidBody.isKinematic = true;
transform.position = Vector3.Lerp(transform.position,ladderTop.transform.position,Time.deltaTime);
}
Я просто добавил эту строку, и она отлично работает:
_myRigidBody.isKinematic = true;
Если isKinematic включен, Силы, столкновения или суставы больше не будут влиять на жесткое тело.