Ejemplo n.º 1
0
        private void OnCollideWithShakeableCamera(ShakeableCamera camera)
        {
            // Calculate nearest point car will pass by camera.
            Vector3 nearestExpectedPointToCamera   = MathHelper.NearestPointOnLine(transform.position, transform.forward, camera.transform.position);
            float   distanceToCameraAtNearestPoint = Vector3.Distance(nearestExpectedPointToCamera, camera.transform.position);
            float   distanceScaler = Mathf.Clamp01(1f / distanceToCameraAtNearestPoint);
            float   shakeForce     = body.velocity.magnitude * shakeScalar;

    #if UNITY_EDITOR
            Debug.DrawLine(transform.position, transform.position + transform.forward * 1000f, Color.red, 10f);
            Debug.DrawLine(nearestExpectedPointToCamera, camera.transform.position, Color.blue, 10f);
    #endif

            float distanceToNearestExpectedPointToCamera = Vector3.Distance(transform.position, nearestExpectedPointToCamera);
            float timeToNearestPoint = distanceToNearestExpectedPointToCamera / body.velocity.magnitude;

            camera.ShakeCamera(shakeForce, distanceToCameraAtNearestPoint, timeToNearestPoint);
        }