Изменение поворота игрока на вращение камеры - PullRequest
0 голосов
/ 11 декабря 2018

Я новичок в Unity и в настоящее время работаю над игрой, подобной порталу.

Я выполнил весь сценарий телепортации, и он работает, но проблема в том, что я не реализовал плееркоррекция камеры и на самом деле у меня нет никаких идей, как это сделать.Концепция заключается в том, что когда вы прыгаете через портал, вращение игрока (или камеры игрока) должно быть изменено на вращение портала / камеры портала, которое вы получили, чтобы окончательный эффект был более «реалистичным».

Я пробовал некоторые строки в сценарии телепортации, например player.transform.rotation = portal.transform.rotation, но в итоге это не сработало, и теперь я ничего не получаю, удаляя предыдущие сценарии и пытаясь писать его снова и снова.

Я буду рад, если кто-нибудь может подсказать мне, как начать кодировать его.Должен ли я сделать это в onTriggerEnter (когда вы перепрыгиваете через портал) или в onTriggerExit?Должен ли скрипт быть прикреплен к плееру или порталу?Должен ли я собирать вращение только с камеры или со всего игрового объекта (портала / игрока)?Я также публикую пару экранов (с видео, как это работает в настоящее время, а также весь сценарий телепортации. Если я что-то пропустил, просто спросите меня, и я опубликую это здесь.

https://imgur.com/a/pbqYnLD - экраны с инспектором порталов

https://streamable.com/b14hk - видео, как это работает

скрипт телепортации:

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

public class Teleportation : MonoBehaviour {

    [SerializeField] private GameObject otherPortal;
    [SerializeField] private GameObject player;

    void OnTriggerEnter(Collider col) {

        if(col.tag == "Player") {

            col.transform.position = new Vector3(otherPortal.transform.position.x+1, otherPortal.transform.position.y+1, otherPortal.transform.position.z+1);
            Debug.Log("wszedłem w portal");

        }
    }


    void Update() {

    }

}

некоторые сведения о том, как это кодируется прямо сейчас:Порталы

  • в настоящее время находятся в игре за «коробкой», я их нигде не создавал, просто меняя положение на lpm (синий портал) и ppm (оранжевый портал)
  • порталы торчатк стенам, как и в оригинальной игре, к порталам
  • прикреплена камера, и сейчас камеры статичны. (offtop: у меня есть скрипт для перемещения их точно во время движения игрока, и он вполне работаетно также есть некоторые проблемы, например, камера может зайти слишком далеко от портала и начать рендеринг только этой зеленой внешней стороны окна, и я также не знаю, как это исправить, поэтому в настоящее время я не использовал этот скриптt)
  • движение игрока, которое я использую, состоит в том, что из стандартных активов единицы (если это как-то имеет значение)
  • игрок имеет твердое тело, но порталы не делают;не уверен, стоит ли мне прикреплять к ним этот компонент * Скрипт телепортации
  • присоединен к обоим порталам - переменная otherPortal перемещена из инспектора, как в оранжевом портале переменная otherPortal - синий портал, аДругой способ

1 Ответ

0 голосов
/ 11 декабря 2018

То, что вы сделали правильно (установка ротации игрока на портал. Вы можете сделать это в onTriggerEnter после установки позиции, тогда это должно выглядеть так:

player.transform.rotation = otherPortal.transform.rotation

Если вы сделаете это,у игрока будет такое же вращение. У вас уже есть что-то, что заставляет камеру следовать за игроком, так что, скорее всего, вам не нужно устанавливать вращение камеры. Я не знаю, как вы следовали за вашей камерой, поэтому я могуХотя, будьте уверены. Если камера имеет неправильную ориентацию, выполнение Camera.main.transform.rotation = otherPortal.transform.rotation сделает это.

Оставшаяся вещь, которая может привести к поломке, может заключаться в том, что ваш плеер (и камера) не обращеныправая ось. В вашем видео я вижу, что портал обращен к оси X (красная ось в редакторе Unity). Убедитесь, что при движении вперед у вашего плеера красная ось смотрит вперед.

Этоскорее всего, у вашего игрока ось z (синяя) обращена вперед, что (по соглашению) более правильно и соответствует именам, используемым Unity (ось z также называется forward-axis)

Я бы порекомендовали создать объект портала (и все другие объекты, включая игрока), чтобы передняя ось была синей.Это может потребовать редактирования объектов.В любом случае, убедитесь, что передняя ось игрока совпадает с порталом, в противном случае настройка вращения не будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...