Как заставить камеру следовать за обьектом?

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Как заставить камеру следовать за обьектом?

Сообщение gind 13 май 2012, 15:44

Нужно заставить камеру следовать за обьектом,но не поворачиваться, и если обьект столкнется с препятствием, то и камера должна остановиться. (камеру засунуть в обьект,как префаб нельзя. нужен скрипт) ???
Чем шире угол зрения - тем он тупее.

Изображение
Аватара пользователя
gind
UNец
 
Сообщения: 30
Зарегистрирован: 01 май 2012, 16:42
  • Сайт
  • ICQ

Re: Как заставить камеру следовать за обьектом?

Сообщение Kayler 13 май 2012, 15:49

gind писал(а):Нужно заставить камеру следовать за обьектом,но не поворачиваться, и если обьект столкнется с препятствием, то и камера должна остановиться. (камеру засунуть в обьект,как префаб нельзя. нужен скрипт) ???


Component -> Camera-control -> Smooth Follow?
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Как заставить камеру следовать за обьектом?

Сообщение zverrr 14 май 2012, 14:52

Первое, что приходит на ум — брать координаты камеры, объекта и сунуть их в «лерп».

Что-то вроде:

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class CamFollow : MonoBehaviour {
       
        public Transform target;
        public bool freezeXPosition = false;
        public bool freezeYPosition = false;
        public bool freezeZPosition = false;
       
        Vector3 fromPosition;
        Vector3 toPosition;
       

        // Use this for initialization
        void Start () {
               
        }
       
        // Update is called once per frame
        void FixedUpdate () {
                fromPosition = transform.position;
                toPosition = target.position;
               
                if(freezeXPosition)
                {
                        toPosition.x = transform.position.x;
                }
               
                if(freezeYPosition)
                {
                        toPosition.y = transform.position.y;
                }
               
                if(freezeZPosition)
                {
                        toPosition.z = transform.position.z;
                }
               
                transform.position = Vector3.Slerp(fromPosition,toPosition,0.1f);
        }
}
Аватара пользователя
zverrr
UNIт
 
Сообщения: 84
Зарегистрирован: 24 сен 2011, 16:06

Re: Как заставить камеру следовать за обьектом?

Сообщение gind 14 май 2012, 15:41

smooth follow - не нужно поворачивать камеру при развороте шарика
CamFollow - нужен вид немного не такой надо сверху на искось смотреть
Чем шире угол зрения - тем он тупее.

Изображение
Аватара пользователя
gind
UNец
 
Сообщения: 30
Зарегистрирован: 01 май 2012, 16:42
  • Сайт
  • ICQ

Re: Как заставить камеру следовать за обьектом?

Сообщение zverrr 14 май 2012, 15:56

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

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class CamFollow : MonoBehaviour {
       
        public Transform target;
        public float MovingDelta = 10f;
        public Vector3 PositionDelta = Vector3.zero;

        void FixedUpdate ()
        {
            transform.position = Vector3.Slerp(transform.position,target.position+PositionDelta,MovingDelta*Time.fixedDeltaTime);
        }
}


В PositionDelta выставь смещение относительно цели.
Аватара пользователя
zverrr
UNIт
 
Сообщения: 84
Зарегистрирован: 24 сен 2011, 16:06


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19