Я неопытен и пытаюсь понять механизм использования лестницы моим персонажем или перелезания через небольшие стены. Для перемещения я использую твердое тело не кинематическое, а с AddForce
. Я попытался создать объект, имитирующий лестницу, по которой можно подняться. Чтобы привести моего персонажа в контакт с лестницей, я вставил в лестницу триггер коллайдера и вызвал функцию OnTriggerStay
. Немного поработав, мой персонаж теперь с булом, когда он достаточно близко, он может подниматься или спускаться по лестнице, но я не понимаю некоторых вещей. Во-первых, скрипт лучше ставить на персонажа или создавать по шкале? Во-вторых, как только вы доберетесь до вершины, как правильно вставить функцию и заставить моего персонажа завершить подъем, заставив его подняться над объектом, где находится лестница. Должен ли я добраться до вершины, уничтожить игровой объект и возродиться в точке чуть выше лестницы? ... как лучше всего в этих случаях?
private Rigidbody rb;
public bool ladderClimb = false;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if(ladderClimb){
directionRot = new Vector3(0, 0, 0); //direction of rotation
movement = new Vector3(0, Input.GetAxisRaw("Vertical"), 0).normalized; //object movement
rb.useGravity = false;}
else rb.useGravity = true;
}
void OnTriggerStay(Collider collider){
if(collider.gameObject.tag == "ladder"){
if(Input.GetKeyUp(KeyCode.E)) ladderClimb = !ladderClimb;}}
void OnTriggerExit(Collider collider){
if(collider.gameObject.tag == "ladder") ladderClimb = false;}