Example #1
0
        private Vector3 ComputeVelocity()
        {
            Vector3 desiredVelocity = Vector3.Normalize(_currentTargetLocation - NpcManager.transform.position) *
                                      NpcManager.GetModelSpeed(NpcGlobalVariables.ChaseAcceleration);

            Vector3 currentVelocity = NpcManager.Rigidbody.velocity;

            Vector3 steering = desiredVelocity - currentVelocity;

            if (steering.magnitude > NpcGlobalVariables.ChaseAcceleration)
            {
                steering = (steering / Vector3.Magnitude(steering)) *
                           NpcManager.GetModelSpeed(NpcGlobalVariables.ChaseAcceleration);
            }

            Vector3 velocity = currentVelocity + steering;

            if (Vector3.Magnitude(velocity) > NpcManager.GetModelSpeed(NpcGlobalVariables.ChaseMaxVelocity))
            {
                velocity = (velocity / Vector3.Magnitude(velocity)) *
                           NpcManager.GetModelSpeed(NpcGlobalVariables.ChaseMaxVelocity);
            }

            velocity += AvoidObstacles.CalculateMove(NpcManager, velocity) *
                        NpcGlobalVariables.ChaseObstacleAvoidanceMultiplier;

            velocity.y = 0;

            return(velocity);
        }
Example #2
0
        private Vector3 CalculateVelocity()
        {
            Vector3 velocity = _currentTargetNode - NpcManager.transform.position;

            velocity  = Vector3.Normalize(velocity);
            velocity += AvoidObstacles.CalculateMove(NpcManager, velocity) *
                        NpcGlobalVariables.WanderObstacleAvoidanceMultiplier;
            velocity.y = 0;

            return(velocity);
        }