コード例 #1
0
        /// <summary>
        /// This is called every frame by AI in order to tell the character what its inputs are
        /// </summary>
        public void SetInputs(ref AICharacterInputs aiInputs)
        {
            // Move and look inputs
            MoveInputVector = aiInputs.MoveVector;

            if (MoveInputVector.sqrMagnitude == 0f)
            {
                LookInputVector = Motor.CharacterForward;
            }
            else
            {
                LookInputVector = Vector3.ProjectOnPlane(MoveInputVector, Motor.CharacterUp);
            }
        }
コード例 #2
0
        private void HandleCharacterNavigation()
        {
            AICharacterInputs aiCharacterInputs = new AICharacterInputs();

            if ((character.transform.position - destination).magnitude <= 0.2f)
            {
                aiCharacterInputs.MoveVector = Vector3.zero;

                // Apply inputs to character
                character.SetInputs(ref aiCharacterInputs);


                return;
            }

            if (NavMesh.CalculatePath(character.transform.position, destination, NavMesh.AllAreas, _path))
            {
                _lastValidDestination = destination;
            }
            else
            {
                NavMesh.CalculatePath(character.transform.position, _lastValidDestination, NavMesh.AllAreas, _path);
            }

            int cornersCount = _path.GetCornersNonAlloc(_pathCorners); //Calculate path corners

            if (cornersCount >= 1)
            {
                // Build the CharacterInputs struct
                aiCharacterInputs.MoveVector = (_pathCorners[1] - character.transform.position).normalized;

                // Apply inputs to character
                character.SetInputs(ref aiCharacterInputs);
            }
            else
            {
                // Build the CharacterInputs struct
                aiCharacterInputs.MoveVector = Vector3.zero;

                // Apply inputs to character
                character.SetInputs(ref aiCharacterInputs);
            }
        }