Чтобы камера была как в gears of war

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

Чтобы камера была как в gears of war

Сообщение zoss 31 окт 2012, 14:49

Скажите как сделать что бы камера крутилась не вокруг персонажа а какбы возле него как в gears of war ??

И у меня ещё почемуто не работает в данном скрипте Input.GetAxis("Mouse ScrollWheel")
Синтаксис:
Используется csharp
using UnityEngine;
using System;
using System.Collections;


public class MouseLook : MonoBehaviour {
       
        public Transform target;
        public float xSpeed=12.0f;
        public float ySpeed=12.0f;
        public float scrollSpeed=10.0f;
        public float zoomMin=1.0f;
        public float zoomMax=20.0f;
        public float distance=2;
        public float Ypos;


        public Vector3 position;
       
        float y=0.0f;
        float x=0.0f;
       
       
       
       
       
       
       
        // Use this for initialization
        void Start () {
               
        Vector3 angles = transform.eulerAngles;
                x=angles.y;
                y=angles.x;
                position=-(transform.forward*distance)+target.position;
                transform.position=position;
                Ypos=transform.position.y;
        }
       
        void Update(){
       
        }
       
        void LateUpdate(){
               
               
                if (target){
                        x+=Input.GetAxis("Mouse X")*xSpeed;
                        y-=Input.GetAxis("Mouse Y")*ySpeed;
                        transform.RotateAround(target.position,transform.up,x);
                        transform.RotateAround(target.position,transform.right,y);
                        transform.rotation=Quaternion.Euler(transform.rotation.x,transform.rotation.y,0);
                        transform.rotation=Quaternion.LookRotation(target.position - transform.position);
                        Ypos=transform.position.y;
                        x=0;
                        y=0;
                }else{
                        if (Input.GetAxis("Mouse ScrollWheel") !=0 )
                        {
                                distance=Vector3.Distance(transform.position, target.position);
                                distance=ZoomLimit(distance - Input.GetAxis("Mouse ScrollWheel")*scrollSpeed,zoomMin,zoomMax);
                               
                                position=target.position-(transform.forward*distance);
                                Ypos=position.y;
                                transform.position=position;
                        }
                }
               
                float d2=Vector3.Distance(transform.position,target.position);
                if (d2!=distance){
                        position=-(transform.forward*distance)+target.position;
                        position.y=Ypos;
                        transform.position=position;                   
                }
               
        }
       
        public static float ZoomLimit(float dist, float min, float max){
                if (dist<min)
                        dist=min;
                if (dist>max)
                        dist=max;
                return dist;
        }

}

 
zoss
UNец
 
Сообщения: 35
Зарегистрирован: 30 сен 2012, 11:24

Re: Чтобы камера была как в gears of war

Сообщение KaMiKaZa 31 окт 2012, 19:19

zoss писал(а):Скажите как сделать что бы камера крутилась не вокруг персонажа а какбы возле него как в gears of war ??

Как самое очевидное и банальное - сделать пустой объект, сделать его "дочерним" к персонажу и разместить в стороне от него. И крутить камеру скриптом вокруг пустого объекта, а не персонажа.
Аватара пользователя
KaMiKaZa
UNIт
 
Сообщения: 75
Зарегистрирован: 29 окт 2012, 15:42
Откуда: ЯНАО, Надым

Re: Чтобы камера была как в gears of war

Сообщение zoss 31 окт 2012, 19:58

KaMiKaZa писал(а):
zoss писал(а):Скажите как сделать что бы камера крутилась не вокруг персонажа а какбы возле него как в gears of war ??

Как самое очевидное и банальное - сделать пустой объект, сделать его "дочерним" к персонажу и разместить в стороне от него. И крутить камеру скриптом вокруг пустого объекта, а не персонажа.

А не самое очевидное и не банальное?
zoss
UNец
 
Сообщения: 35
Зарегистрирован: 30 сен 2012, 11:24

Re: Чтобы камера была как в gears of war

Сообщение mrcoder 31 окт 2012, 23:08

зосс, если вы хотите сделать игру - освойте хотя бы азы программирования.
как плотник может объяснить, что то парикмахеру, который абсолютно далек от плотничества? :-B
Аватара пользователя
mrcoder
Старожил
 
Сообщения: 704
Зарегистрирован: 28 июн 2012, 22:40

Re: Чтобы камера была как в gears of war

Сообщение seaman 01 ноя 2012, 14:35

По второму вопросу (почему не работает скрипт).
Зачем проверяете if(target) ? Вы его назначаете же в инспекторе?! Значит он всегда будет не null, значит else никогда не выполнится.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Чтобы камера была как в gears of war

Сообщение KBEP 01 ноя 2012, 16:07

seaman писал(а):Зачем проверяете if(target) ? Вы его назначаете же в инспекторе?! Значит он всегда будет не null, значит else никогда не выполнится.

Ну, а вдруг забудет назначить? Тогда будет null. :D К тому же target объявлена как public, значит запросто может быть изменена внешним скриптом, в т. ч. и на null.
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск

Re: Чтобы камера была как в gears of war

Сообщение seaman 01 ноя 2012, 17:45

KBEP
Вы вообще код смотрели? А вопрос читали? И что Вы все свои публичные переменные проверяете на null? Да еще и когда null все равно обращаетесь к ее членам?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Чтобы камера была как в gears of war

Сообщение zoss 01 ноя 2012, 19:26

seaman писал(а):По второму вопросу (почему не работает скрипт).
Зачем проверяете if(target) ? Вы его назначаете же в инспекторе?! Значит он всегда будет не null, значит else никогда не выполнится.

У меня там проверялось два условия.
mrcoder писал(а):зосс, если вы хотите сделать игру - освойте хотя бы азы программирования.
как плотник может объяснить, что то парикмахеру, который абсолютно далек от плотничества? :-B

Мне казалось что на форуме под названием "Почемучка. Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно." мне помогут и не будут посылать учить программирование. Разве не в этом смысл данного форума?
zoss
UNец
 
Сообщения: 35
Зарегистрирован: 30 сен 2012, 11:24

Re: Чтобы камера была как в gears of war

Сообщение seaman 01 ноя 2012, 19:38

мне помогут и не будут посылать учить программирование. Разве не в этом смысл данного форума?

Нет не в этом. Если хотите - можете поискать - тут несколько раз уже говорили в чем смысл этого форума. ДА, и если Вы не хотите учить программирование - не пытайтесь сами делать игры. Наймите программиста.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Оффтоп

Сообщение KBEP 01 ноя 2012, 23:43

seaman писал(а):Вы вообще код смотрели?
да
seaman писал(а):А вопрос читали?
да
seaman писал(а):И что Вы все свои публичные переменные проверяете на null?
да, если есть вероятность, что они могли быть изменены на null
seaman писал(а):Да еще и когда null все равно обращаетесь к ее членам?
нет, для этого и проверяю на null-значение
Откуда столько агрессии? Пост-то по делу был, в отличии от этого. Автор только часть кода показал, может он таргет по сто раз меняет, мы же этого не знаем.
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск

Re: Чтобы камера была как в gears of war

Сообщение seaman 02 ноя 2012, 06:52

Эта ветка выполняется когда target == null.
Синтаксис:
Используется csharp
 }else{
                        if (Input.GetAxis("Mouse ScrollWheel") !=0 )
                        {
                                distance=Vector3.Distance(transform.position, target.position);

Видите тут ляп? Вы же код смотрели? Почему то ни слова не сказали, что нельзя обращаться к членам target если он == null. Лучше бы это написали, чем рассуждать о том, что target принципиально может быть null. Ну а еще лучше подумали что обычно делается когда какая то переменная null - назначается ей новое значение, выводится предупреждение в лог... Ну и никогда не используется эта переменная для (как в данном случае) приближения/отдаления камеры.
Имхо - совершенно очевидно, что тут подразумевалось совершенно другое действие, типа if(target == null) return;. Потому и спросил топикастера - зачем проверяет?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Чтобы камера была как в gears of war

Сообщение KBEP 02 ноя 2012, 09:55

Вот так бы и написал автору, а ты его в заблуждение вводишь, мол, если назначил в инспекторе, значит всегда не нул. Нелогично. Что касается скрипта, скрипт не работает как надо, что с проверкой, что без.
Аватара пользователя
KBEP
Старожил
 
Сообщения: 598
Зарегистрирован: 24 сен 2012, 23:23
Откуда: Калининград, СПб, Северодвинск

Re: Чтобы камера была как в gears of war

Сообщение seaman 02 ноя 2012, 10:24

Вот так бы и написал автору

Не надо мне указывать что делать - на себя посмотрите.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Чтобы камера была как в gears of war

Сообщение strelok 02 ноя 2012, 12:15

Обсуждение - УРАГАН!!!! =))
strelok
UNIверсал
 
Сообщения: 356
Зарегистрирован: 15 ноя 2009, 13:29
Откуда: Курск


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

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

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