Unity3D: создавайте сценарии, чтобы подняться по лестнице

Я неопытен и пытаюсь понять механизм использования лестницы моим персонажем или перелезания через небольшие стены. Для перемещения я использую твердое тело не кинематическое, а с 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;}

person Blue03    schedule 06.06.2020    source источник


Ответы (1)


Вы можете добавить триггер-коллайдер в лестницу и проверить, касается ли игрок коллайдера, затем отключить гравитацию и разрешить вертикальное движение. Но в случае отрыва объекта от лестницы, снова включить гравитацию и ограничить вертикальное движение.

person Community    schedule 07.06.2020
comment
Извините, но это то, что я уже сделал в своем коде. Что я хочу знать, так это то, что, оказавшись на вершине лестницы, как я закончу восхождение? Игрок находится в третьем лице, поэтому в конце мне нужен скрипт, который связывает выход с лестницы с прибытием игрока над стеной, где находится лестница. - person Blue03; 07.06.2020
comment
Если это так, добавьте пустой игровой объект на вершину каждой лестницы и проверьте, меньше ли расстояние между игроком и вершиной лестницы, чем заданное расстояние, затем добавьте небольшое усилие, чтобы переместить его на вершину и включить твердое тело. коробочный коллайдер. Коллайдер твердого ящика должен касаться поверхности стены. Так что, когда игрок снова коснется сплошного коллайдера и нажмет клавишу со стрелкой вниз, отключите гравитацию, сплошной коллайдер и снова включите вертикальное движение. - person Robert Polomon; 07.06.2020
comment
Не забудьте добавить Solid Box Collider, то есть Box Collider, который не имеет триггерной функции, он просто касается стены, чтобы вы могли определить, когда игрок снова ступил на вершину лестницы. - person Robert Polomon; 07.06.2020