Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 14.01.2011, 22:03   #46
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
Покажи код.

UPD: Догадки: 1) поле GameObject myPrefab не public (public GameObject myPrefab) и ты на него ничего не бросил соответственно. 2) где-то переменной myPrefab что-то присваиваешь.
Проверил perfab public.
Раньше Heracty заполнялось Cube(Clone)
А сейчас вообще ничего не клонируется.

perfab в Nscript классе, естественно отдельно от start() И Update().
В Script References NScript добавил свою модель.
Может модели просто нельзя клонировать в отличие от кубов?
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 22:07   #47
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Покажи скрин инспектора твоего скрипта

Сообщение от Evgen Посмотреть сообщение
В Script References NScript добавил свою модель.
Может модели просто нельзя клонировать в отличие от кубов?
Ясна проблема: добавь ссылку не в Script References, а на объект, где у тебя скрипт в сцене висит.

Script References - отвечает за заполнение свойств скрипта при его навешивании на объект, но не после.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (14.01.2011)
Старый 14.01.2011, 22:32   #48
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Заработало конечно. Но мне нужно не скрипт вешать на объект, а из скрипта управлять объектами. Поэтому я и прошу как это сделать из кода.
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 22:34   #49
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Как ты хочешь из скрипта управлять объектами? Опиши все нужные возможности.
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 22:40   #50
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Вот у меня есть массив GameObject для моделей.
Допустим загрузил я в Project несколько моделей например там ship,tank,jeep далее вешаю свой NScript на Camera.Main и из него в масив GameObject клонирую либо ship либо tank, захотел поменял ship на tank и т.д. вообщем чтобы можно было менять клоны в массиве, если понадобится.
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 22:53   #51
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

GameObject[] cube;
    public 
GameObject tank;
    public 
GameObject jeep;
    
void Start()
    {
        
cube = new GameObject[2000];


        for (
int i 0cube.Length 2i++)
        {
            
cube[i] = (GameObject)Instantiate(tank);
        }
        for (
int i cube.Length 2cube.Lengthi++)
        {
            
cube[i] = (GameObject)Instantiate(jeep);
        }
    }

    
void Update()
    {
        if (
Input.GetKeyDown(KeyCode.Space))
        {
            for (
int i 0cube.Lengthi++)
            {
                
Destroy(cube[i]);
                
cube[i] = (GameObject)Instantiate(jeep);
            }
        }
        for (
int i 0cube.Lengthi++)
        {
            
cube[i].transform.position = new Vector3(101010);

        }
    } 
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (14.01.2011)
Старый 14.01.2011, 23:06   #52
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Спасибо! Идея понята. Буду экспериментировать.
(Offline)
 
Ответить с цитированием
Старый 15.01.2011, 13:38   #53
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Небольшой доп.вопрос:
Как сделать камеру как в режиме просмотра сцены?
Влево-вправо двигается
camera.Translate(Vector3.right *Input.GetAxis("Horizontal")*speed);
А при движении вперед назад, начинает опускатся/подниматся.
А мне нужно, чтобы она была все время на одной и той же высоте

Может ее как-то сравнять с линией горизонта потом передвинуть вперед и вернуть угол наклона обратно?

//Перемещение
camera.Translate(Vector3.right *Input.GetAxis("Horizontal")*speed);
//Вперед назад...
сamera.Translate(Vector3.forward *Input.GetAxis("Vertical")*speed);		
// Поворот камеры при зажатой правой клавише
if (Input.GetMouseButton(1)){
	camera.Rotate(0,Input.GetAxis("Mouse X")*turnSpeed, 0, Space.World);
	camera.Rotate(-Input.GetAxis("Mouse Y")*turnSpeed,0,0);
}
(Offline)
 
Ответить с цитированием
Старый 15.01.2011, 14:33   #54
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

//Перемещение
camera.Translate(camera.transform.right *Input.GetAxis("Horizontal")*speed);
//Вперед назад...
сamera.Translate(camera.transform.forward *Input.GetAxis("Vertical")*speed); 
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Evgen (15.01.2011), HolyDel (15.01.2011)
Старый 15.01.2011, 14:55   #55
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
//Перемещение
camera.Translate(camera.transform.right *Input.GetAxis("Horizontal")*speed);
//Вперед назад...
сamera.Translate(camera.transform.forward *Input.GetAxis("Vertical")*speed); 
Не не то. она опять летит в землю а не вперед.

Камера по красной оси (влево/вправо) двигается нормально
А (вперед/назад) она двигается по синей оси.
А мне нужно что-бы вперед/назад она двигалась по фиолетовой оси, то есть параллельно террайну, на зависимо от угла наклона синей и зеленой стрелки.
В режиме просмотра сцены она именно так и двигается.
Миниатюры
Нажмите на изображение для увеличения
Название: cam.jpg
Просмотров: 737
Размер:	34.0 Кб
ID:	12374  
(Offline)
 
Ответить с цитированием
Старый 15.01.2011, 15:30   #56
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Тогда вот так:
Vector3 camForward =  camera.transform.forward;
camForward.y=0;
сamera.Translate(camForward.normalized *Input.GetAxis("Vertical")*speed); 
(Offline)
 
Ответить с цитированием
Старый 15.01.2011, 15:31   #57
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
Тогда вот так:
Vector3 camForward =  camera.transform.forward;
camForward.y=0;
сamera.Translate(camForward.normalized *Input.GetAxis("Vertical")*speed); 
Так тоже куда-то в сторону плывет.

В общем я сделал так, работает.
Определяю угол наклона между камерой и горизонтом.
Поднимаю камеру в верх на этот угол чтобы она сравнялась с горизонтом.
Двигаю камеру вперед.
Опускаю камеру на тот же угол.
Криво но работает.

//Перемещение
camera.Translate(Vector3.right *Input.GetAxis("Horizontal")*speed);		
//Вперед назад...
float angle=camera.transform.rotation.eulerAngles.x;
camera.Rotate(-angle,0,0);
camera.Translate(Vector3.forward*Input.GetAxis("Vertical")*speed); 	
camera.Rotate(+angle,0,0);
(Offline)
 
Ответить с цитированием
Старый 15.01.2011, 15:39   #58
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Может это все из-за Translate. Никогда ей не пользовался
Попробуй так:
Vector3 camForward =  camera.transform.forward;
camForward.y=0;
camera.transform.position += camForward.normalized *Input.GetAxis("Vertical")*speed
да
function Translate (translation Vector3relativeTo Space Space.Self) : void 
по умолчанию Translate в локальных координатах.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (15.01.2011)
Старый 15.01.2011, 16:15   #59
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Vector3 camForward =  camera.transform.forward;
camForward.y=0;
camera.transform.position += camForward.normalized *Input.GetAxis("Vertical")*speed
Во вот так работает, как надо.

30000 обновляемых объектов, из которых на экране отображается только 3000, в зоне камеры на расстоянии 200 метров.
Миниатюры
Нажмите на изображение для увеличения
Название: Clones2.jpg
Просмотров: 778
Размер:	116.9 Кб
ID:	12395  

Последний раз редактировалось Evgen, 16.01.2011 в 17:59.
(Offline)
 
Ответить с цитированием
Старый 21.01.2011, 00:04   #60
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Есть ли какой-нибудь простой способ получить FPS (кадровую частоту)? Или это нужно делать вручную?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:23.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com