Управление NavMeshAgent

Программирование на Юнити.

Управление NavMeshAgent

Сообщение Volosnya 15 ноя 2017, 22:49

На персонаже весит NavMeshAgent, мне нужно заставить его прыгнуть, и чтобы он находясь в воздухе, продолжал двигаться к цели. Я пытался использовать вот этот скрипт, но после нажатия пробела персонаж приостанавливается, а потом продолжает идти дальше. Если нажать пробел несколько раз то он подлетает вверх, но при этом не продолжает двигаться в сторону цели, и после того как он приземляется он уже не реагирует на пробел.

Синтаксис:
Используется csharp
    private NavMeshAgent agent;
        public LayerMask groundMask;
        private Rigidbody rb;

        public Transform target;
        public float jumpForce;
        public float groundRadius;
        public bool isGrounded;
        public Collider[] ground;
       

        void Start()
        {
                agent = GetComponent<NavMeshAgent>();

                agent.autoBraking = false;

                agent.destination = target.position;

        rb = GetComponent<Rigidbody>();
        }

        void Update()
        {
                ground = Physics.OverlapSphere(transform.position, groundRadius, groundMask);

                if (ground.Length == 0)
                {
            isGrounded = false;
                        agent.enabled = false;
                }
                else{
                        isGrounded = true;
                        agent.enabled = true;
                        agent.destination = target.position;
                }

                Jump();

        }


        void Jump()
        {
                if(Input.GetKeyDown(KeyCode.Space) && isGrounded)
                {
                        isGrounded = false;

            agent.enabled = false;

            rb.AddForce(transform.up * jumpForce, ForceMode.Impulse);
                        agent.velocity = rb.velocity;
                }
        }
Volosnya
UNец
 
Сообщения: 33
Зарегистрирован: 22 окт 2017, 09:35

Re: Управление NavMeshAgent

Сообщение greatPretender 16 ноя 2017, 11:19

Плавно изменяйте NavMeshAgent.baseOffset в момент начала прыжка от базового значения до высоты прыжка. С момента начала падения - меняйте то значение обратно в базовое.
greatPretender
Старожил
 
Сообщения: 526
Зарегистрирован: 23 сен 2015, 07:51

Re: Управление NavMeshAgent

Сообщение Volosnya 16 ноя 2017, 16:10

greatPretender писал(а):Плавно изменяйте NavMeshAgent.baseOffset в момент начала прыжка от базового значения до высоты прыжка. С момента начала падения - меняйте то значение обратно в базовое.


Можете написать как это будет выглядеть в скрипте :ympray: ? А то я пытался сделать так как вы сказали но в моем скрипте он не считает BaseOffset если Nav Mesh Agent выключается, а если его не выключать, то персонаж вообще не подпрыгивает.
Volosnya
UNец
 
Сообщения: 33
Зарегистрирован: 22 окт 2017, 09:35


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6