コード例 #1
0
        /// <summary>
        /// Applies force to the held obstacle, if necessary.
        /// </summary>
        protected void ApplyForceToObstacle()
        {
            Vector3 currentDistance      = HookingData.HookedObstacle.GetPosition() - transform.position;
            var     forceCalculator      = ForceCalculator.GetInstance();
            Vector3 glovePositionalForce = forceCalculator.GlovePositionalForce(currentDistance, HookingData.HookingRefDistance, Strength);
            Vector3 gloveRotationalForce = forceCalculator.GloveRotationalForce(HookingData.HookingRefDistance, GameConstants.PlayerRotationRefVector, transform.rotation, Strength);

            Vector3 dampeningForce = forceCalculator.DampeningForce(HookingData.HookedObstacle.GetVelocity(), _dampeningFactor, Strength);

            Vector3 totalForce = glovePositionalForce + gloveRotationalForce;

            totalForce += dampeningForce;
            totalForce *= Time.deltaTime;
            HookingData.HookedObstacle.ApplyForce(totalForce);
        }