|
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
14.01.2011, 22:03
|
#46
|
Разработчик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Покажи скрин инспектора твоего скрипта
Сообщение от Evgen
В Script References NScript добавил свою модель.
Может модели просто нельзя клонировать в отличие от кубов?
|
Ясна проблема: добавь ссылку не в Script References, а на объект, где у тебя скрипт в сцене висит.
Script References - отвечает за заполнение свойств скрипта при его навешивании на объект, но не после.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2011, 22:32
|
#48
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Заработало конечно. Но мне нужно не скрипт вешать на объект, а из скрипта управлять объектами. Поэтому я и прошу как это сделать из кода.
|
(Offline)
|
|
14.01.2011, 22:34
|
#49
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Как ты хочешь из скрипта управлять объектами? Опиши все нужные возможности.
|
(Offline)
|
|
14.01.2011, 22:40
|
#50
|
Разработчик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 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 = 0; i < cube.Length / 2; i++) { cube[i] = (GameObject)Instantiate(tank); } for (int i = cube.Length / 2; i < cube.Length; i++) { cube[i] = (GameObject)Instantiate(jeep); } }
void Update() { if (Input.GetKeyDown(KeyCode.Space)) { for (int i = 0; i < cube.Length; i++) { Destroy(cube[i]); cube[i] = (GameObject)Instantiate(jeep); } } for (int i = 0; i < cube.Length; i++) { cube[i].transform.position = new Vector3(10, 10, 10);
} }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.01.2011, 23:06
|
#52
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Спасибо! Идея понята. Буду экспериментировать.
|
(Offline)
|
|
15.01.2011, 13:38
|
#53
|
Разработчик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 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 за это полезное сообщение:
|
|
15.01.2011, 14:55
|
#55
|
Разработчик
Регистрация: 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);
|
Не не то. она опять летит в землю а не вперед.
Камера по красной оси (влево/вправо) двигается нормально
А (вперед/назад) она двигается по синей оси.
А мне нужно что-бы вперед/назад она двигалась по фиолетовой оси, то есть параллельно террайну, на зависимо от угла наклона синей и зеленой стрелки.
В режиме просмотра сцены она именно так и двигается.
|
(Offline)
|
|
15.01.2011, 15:30
|
#56
|
Unity/C# кодер
Регистрация: 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
|
Разработчик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 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 : Vector3, relativeTo : Space = Space.Self) : void
по умолчанию Translate в локальных координатах.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.01.2011, 16:15
|
#59
|
Разработчик
Регистрация: 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 метров.
Последний раз редактировалось Evgen, 16.01.2011 в 17:59.
|
(Offline)
|
|
21.01.2011, 00:04
|
#60
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: C# Быстрый поворот/перемещение множества объектов
Есть ли какой-нибудь простой способ получить FPS (кадровую частоту)? Или это нужно делать вручную?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:18.
|