Пример #1
0
    private void HookedMovement()
    {
        driftDuration += Time.deltaTime;

        Quaternion baseRotation = Quaternion.Lerp(carTransform.rotation, Quaternion.AngleAxis(1 * connectedRotator.ClockwiseValue, Vector3.up), driftDuration / 0.2f);

        carTransform.rotation = Quaternion.AngleAxis(driftDuration * connectedRotator.ClockwiseValue * skidPower, Vector3.up) * Quaternion.LookRotation(transform.forward);

        Vector3 newDir;

        Vector3 newPosition = transform.position + (connectedRotator.GetRotatedPosition(transform.position, carSpeed, out newDir) - transform.position).normalized * carSpeed * 1.5f;

        newPosition.y = 0;

        Vector3 overRotatedNewDir = Quaternion.AngleAxis(connectedRotator.ClockwiseValue * 150, carTransform.up) * newDir;

        Quaternion rot = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(overRotatedNewDir).normalized, Time.deltaTime * 4);

        rigidbody.MovePosition(newPosition);

        rigidbody.MoveRotation(rot);
    }