예제 #1
0
    void UpdateTargetPositionBasedOnCollision(ref Vector3 hitNormal)
    {
        Vector3 movement          = targetPosition - currentPosition;
        Vector3 movementDirection = movement.normalized();
        float   movementLength    = movement.Length;

        if (!Mathf.Approximately(movementLength, 0))
        {
            Vector3 reflectDir = ComputeReflectionDirection(ref movementDirection, ref hitNormal);
            reflectDir.Normalize();

            Vector3 perpindicularDir = PerpindicularComponent(ref reflectDir, ref hitNormal);

            targetPosition = currentPosition;

            Vector3 perpComponent = perpindicularDir * movementLength;
            targetPosition += perpComponent;
        }
    }