Повернутый портал неправильно работает
Я хочу сделать порталы схожие с порталами из игры портал. Одинаково наклоненные порталы по осям x и y работают как и задумывалось. А если портал наклонить, то он странно телепортирует объекты. Для телепортации объекта код изменяет положение объекта на сумму положения другого портала и повернутую разность положений объекта и этого портала. Для тестов я написал написал логику для телепортации тестового объекта. Видео с проблемой
Телепортация игрока:
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "Player" && _canTeleport)
{
Vector3 offset = other.transform.position - transform.position;
Quaternion rotation = Quaternion.Euler(_otherPortal.transform.rotation.eulerAngles - transform.rotation.eulerAngles);
_testObject.transform.position = _otherPortal.transform.position + rotation * offset;
_mainCamera.transform.rotation = Quaternion.Euler(_mainCamera.transform.rotation.eulerAngles + (_otherPortal.transform.rotation.eulerAngles.y - transform.rotation.eulerAngles.y + 180) * Vector3.up);
_playerRb.velocity = Quaternion.Inverse(Quaternion.Euler(transform.rotation.eulerAngles - _otherPortal.transform.rotation.eulerAngles + 180 * Vector3.up)) * _playerRb.velocity;
_otherPortal.CanTeleport = false;
}
}
Телепортация тестового объекта
private void OnTriggerStay(Collider other)
{
Vector3 offset = other.transform.position - transform.position;
Quaternion rotation = Quaternion.Euler(_otherPortal.transform.rotation.eulerAngles - transform.rotation.eulerAngles);
_testObject.transform.position = _otherPortal.transform.position + rotation * offset;
}