Мои порталы перестают работать, когда вы их поворачиваете Unity 3d C#

Я сделал гладкие порталы в Unity, и они работают как часы, пока я не поверну их. Я надеялся, что кто-нибудь предложит другой способ решения проблемы рендеринга порталов. Вот мой код для камеры рендеринга:

      using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PortalCamera : MonoBehaviour
{
    public Transform playerCamera;
    public Transform portal;
    public Transform otherPortal;
   
    void LateUpdate()
    {
        Vector3 playerOffset2Camera = playerCamera.position - otherPortal.position;
        transform.position = portal.position + playerOffset2Camera;

        float angleDiffBtwPortalRotations = Quaternion.Angle(portal.rotation, otherPortal.rotation);

        Quaternion portalRotationalDiff = Quaternion.AngleAxis(angleDiffBtwPortalRotations, Vector3.up);
        Vector3 newCamRotation = portalRotationalDiff * playerCamera.forward;
        transform.rotation = Quaternion.LookRotation(newCamRotation, Vector3.up);
    }
}

На данный момент проблема в следующем:

       Vector3 playerOffset2Camera = playerCamera.position - otherPortal.position;
        transform.position = portal.position + playerOffset2Camera;

Здесь скрипт вычисляет расстояние между игроком и порталом А, а затем использует это значение для расстояния между порталом_b и камерой_b, которое используется для рендеринга портала. Это создает эффект плавности при прохождении, как в играх Portal и Portal2 от Valve.

Проблема, которую я обнаружил, заключается в том, что когда вы поворачиваете портал, камера делает то, что ей приказано, и остается в том положении, в котором находится игрок, но, поскольку портал повернут, он находится не под тем углом, под которым должен находиться, и это портит всю иллюзию. Мне нужно найти способ изменить вращение «смещения», созданного для камеры, чтобы иллюзия не разрушалась.

Я пробовал несколько вещей, например, изменение расчета смещения на GameObject, который вращается вместе с порталом, но координаты xyz не меняются, поэтому это не сработало.

0 ответов

Другие вопросы по тегам