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

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

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

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

Ответ
 
Опции темы
Старый 13.01.2011, 22:38   #31
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Ответы по работе с террейном тут:
http://unity3d.com/support/documenta...rrainData.html
По поводу нормалей... рейкаст в сторону террейна(т.е. вниз) - один из вариантов.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (13.01.2011)
Старый 14.01.2011, 00:07   #32
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
Ответы по работе с террейном тут:
http://unity3d.com/support/documenta...rrainData.html
По поводу нормалей... рейкаст в сторону террейна(т.е. вниз) - один из вариантов.
Ну вы, юнитоиды, совсем *****нулись - рейкасты приплетать? Ладно - новички, но ты, pax?

1. Берём 3 точки на поверхности террайна (и не говорите мне, что в юнити так нельзя) - сам куб + 2 любые рядом.
2. Из них делаем два вектора с началом в кубе.
3. Векторно перемножаем.
4. Нормаль готова, получите и распишитесь.

Обычно не пишу в юнити-тредах, ибо посчитают, что троллю, но тут уж промолчать было преступно.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Evgen (14.01.2011), impersonalis (14.01.2011), Mr_F_ (14.01.2011), pax (14.01.2011), Randomize (15.01.2011), SBJoker (14.01.2011)
Старый 14.01.2011, 00:13   #33
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от ABTOMAT Посмотреть сообщение
1. Берём 3 точки на поверхности террайна (и не говорите мне, что в юнити так нельзя) - сам куб + 2 любые рядом.
2. Из них делаем два вектора с началом в кубе.
3. Векторно перемножаем.
4. Нормаль готова, получите и распишитесь.
Да ладно, вообщем с высотой я уже разобрался.
А вот с нормалью тупик.
Делаю так:

Vector3 n=terrainData.GetInterpolatedNormal(x/1024,y/1024);
cube.transform.rotation = Quaternion.Euler(n);
GetInterpolatedNormal возвращает Vector3 я так понял в Радианах, но может быть и нет. А Quaternion.Euler должен быть вроде бы в градусах.
Кубики не ворочаются так как числа варьируются не от 0-360, а от ~0..1.
Как преобразовать?
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 00:16   #34
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

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

Сообщение от Evgen Посмотреть сообщение
GetInterpolatedNormal возвращает Vector3 я так понял в Радианах, но может быть и нет. А Quaternion.Euler должен быть вроде бы в градусах.
Кубики не ворочаются так как числа варьируются не от 0-360, а от ~0..1.
Как преобразовать?
Это не в радианах. Это нормаль к террейну, вектор ему перпендикулярный. Попробуй ее присвоить transform.up = GetInterpolatedNormal();
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (14.01.2011)
Старый 14.01.2011, 01:17   #36
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
Это не в радианах. Это нормаль к террейну, вектор ему перпендикулярный. Попробуй ее присвоить transform.up = GetInterpolatedNormal();
Заработало!
Поправляйся PAX.

cube[t].transform.position = new Vector3(cubex[t],terrainData.GetInterpolatedHeight(cubex[t]/1024,cubey[t]/1024),cubey[t]);			
cube[t].transform.up=terrainData.GetInterpolatedNormal(cubex[t]/1024,cubey[t]/1024);
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (14.01.2011)
Старый 14.01.2011, 01:39   #37
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Опять же - трансформы лучше получать отдельно. Свойство transform ищет на объекте компонент Transform прежде чем его использовать - это дополнительная нагрузка. В прочем как и другие свйосва объекта типа collider, audio, camera и т.д.
Сообщение от Evgen Посмотреть сообщение
Поправляйся PAX.
спасибо
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 19:18   #38
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

АВТ, несоглашусь.

втроенные методы предпочтительнее, хотя бы из-за уровня удаления от ядра.©импер

етот рейкаст может ядром юниты быть реализован эффективнее чем три получения высоты. хотя надо тестить в любом случае...
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 20:19   #39
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от HolyDel Посмотреть сообщение
АВТ, несоглашусь.

втроенные методы предпочтительнее, хотя бы из-за уровня удаления от ядра.©импер

етот рейкаст может ядром юниты быть реализован эффективнее чем три получения высоты. хотя надо тестить в любом случае...
Рейкаст быстрее перемножения интенсивности текселя и скейла террейна? Ни за что не поверю.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

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

Кто подскажет?

Вот я создаю в GameObject примитив куб, вот так:
public GameObject myPrefab;
myPrefab=GameObject.CreatePrimitive(PrimitiveType. Cube);
А теперь я хочу в место куба использовать 3DS модель.
Я ее загрузил модель уже в Heractiy и Project, но как загрузить ее в сам GameObject я понять не могу.
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 21:17   #41
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

Не надо ее бросать в Hierarchy. У скрипта есть поле GameObject myPrefab; на него в инспекторе юнити бросаешь свою модель, а в скрипте убираешь строчку myPrefab=GameObject.CreatePrimitive(PrimitiveType. Cube);
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (14.01.2011)
Старый 14.01.2011, 21:31   #42
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Сообщение от pax Посмотреть сообщение
Не надо ее бросать в Hierarchy. У скрипта есть поле GameObject myPrefab; на него в инспекторе юнити бросаешь свою модель, а в скрипте убираешь строчку myPrefab=GameObject.CreatePrimitive(PrimitiveType. Cube);
Пробовал ошибка:
NullReferenceException: Object reference not set to an instance of an object
NScript.Update () (at Assets/NScript.cs:65)


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

Покажи код.

UPD: Догадки: 1) поле GameObject myPrefab не public (public GameObject myPrefab) и ты на него ничего не бросил соответственно. 2) где-то переменной myPrefab что-то присваиваешь.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Evgen (14.01.2011)
Старый 14.01.2011, 21:54   #44
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Сообщение Ответ: C# Быстрый поворот/перемещение множества объектов

Жалуется на cube[i].transform.position типа "исходный объект не найден".

GameObject[] cube;
public GameObject myPrefab;

void Start()
{
cube = new GameObject[2000];
//myPrefab=GameObject.CreatePrimitive(PrimitiveType.Cube);
//myPrefab.GetComponent<BoxCollider>().isTrigger = true;
//DestroyImmediate(myPrefab.GetComponent<BoxCollider>()); 
for(int i=0;i<cube.Length;i++){
	cube[i] = (GameObject)Instantiate(myPrefab);
}
}

void Update()
{
for(int i = 0; i<cube.Length; i++){
	cube[i].transform.position = new Vector3(10,10,10);
}
}
(Offline)
 
Ответить с цитированием
Старый 14.01.2011, 21:57   #45
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: C# Быстрый поворот/перемещение множества объектов

myPrefab где объявлена? и в инспекторе на нее кинул модель?
Если приведенный код неизменный в программе, то должно работать.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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