Здравствуйте.
Имеется некий кубик (сейчас это мой персонаж). Камера висит над ним сверху и чуть сбоку. Раньше, при повороте персонажа, следом за ним поворачивалась и камера. Повесил скрипт на камеру, который в Start() ловит в Quaternion текущий Rotation камеры и в Update присваивает transform.rotation значение нашего кватерниона. Теперь камера не вертится следом за игроком, а вертится вокруг него по орбите при повороте игрока ¯\_(ツ)_/¯
Цель: камера должна лететь над персонажем на определённой высоте с наклоном по X 45 (вид с высоты птичьего полета), поднимаясь и опускаясь с нашим игроком. Как я понял - нужно заморозить Rotation камеры по Y и Z, но ума не приложу - как это сделать. Всё, что пробовал, приводит к движению камеры по орбите вокруг игрока.
ни скриншотов иерархии, ни примера кода.
что ж. чтоб двигалась за игроком. надо положить камеру под игрока) и добавить смещение)
или скриптом. приравнивать позицию +смещение + контроллировать поворот))
хотели наверное примеры кода и пояснения?!)) ¯\_(ツ)_/¯
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ThirdRotation : MonoBehaviour {
public Quaternion activeRotation;
// Use this for initialization
void Start () {
activeRotation = Quaternion.Euler(45, 0, 0);
}
// Update is called once per frame
void FixedUpdate () {
transform.rotation = activeRotation;
}
}
А вот, как она себя ведет при повороте игрока (сохраняется наклон 45 градусов по X, но Y начинает меняться, из-за чего она и крутится по орбите вокруг игрока:
и вот что вас не устраивает в работе "без скрипта"??
вы двигаете и вращаете Cube.и если нет никакого скрипта. камера за ним следует.
и что вы хотели скриптом изменить? нужно какое-то другое поведение?
вы на скрипте убрали "галочку" возможно..а не удалили его с камеры.
ну и почитайте!!!!! про локальные и глобальные - координаты ,повороты и масштаб scale).
чтобы понято что ваше
transform.rotation = activeRotation;
- творит жуткую дичь)
разберите какой-то пример.может. те же официальные туториалы.
просто для понимания.
у каждого объекта есть
localRotation и rotation. (ну и позиция и масштаб)
и они могут отличаться для объектов у которых есть родитель в иерархии.
повторюсь. смотрите примеры. читайте документацию.
если такие вещи вызывают затруднения и непонимание со старта. то тут или выспаться )) или будет тяжко очень дальше)
Denis Gaydak, суть в том, что камера вертится за персонажем без скрипта. Мне нужно её статичное положение (без вращения), т.е. просто чтобы летала за игроком на высоте N, не вращаясь. Хотя подумываю уже плюнуть и запилить 1st person с управлением мышкой, геморроя меньше.
если вам надо чтоб камера.."смотрела на персонажа со спины"..
то не ложите камеру под персонажа.
а сделайте отдельным объектом.и скрипт со ссылкой что то вроде
public Transform target;//your cube or player
public Vector3 offset;//offset))) change value in editor
///
void Update()
{
this.transform.position = target.position+offset;
}
если заходите можете добавить кроме оффсета(смещения) по позиции еще и угол. но в данном варианте просто как поставите камеру в Editor, под таким углом и будет стоять.
главное не забудте из под угрока/куба вытащить) чтоб была самостоятельным объектом)
ну и ссылки все назначить и тд)
но все равно у вас камера будет именно замороженная. если персонаж будет бежать "в бок" выглядеть это будет нелепо.
камеры от третьего лица все же вращаются за персонажем.
а вы хотите аля "диабло" камера..изометрическая эдакая) вид сверху.ну ок)