Помощь в логике

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

Помощь в логике

Сообщение istreloi 15 фев 2017, 13:00

Всем привет! Суть такова: Ставим при помощи мышки на плоскость рандомную 3д модель квадратной плитки(на ней может быть 4 разных изображения по краям плитки). При помощи правой кнопки можно вертеть плитку прибовляя ей строго 90 градусов. Если на плоскости стоит еще плитка или плитки и есть свободное место для новой то нужно проверить подойдет ли плитка если ее поставить в это свободное место или в любое другое рядом с другими (Принцип соединения плиток как в домино , только в домино 2 картинки и используют две стороны прямоугольника а у меня квадратики и 4 стороны с разными изображениями). В данный момент рещилось это дополнительными 4-мя дочерними обьектами, каждый из которых проверяет столкновение с таким же дочерним обьектом другой плитки если она рядом и сравнивает её тег, и так каждый из 4-х дочерникх если совпало то плитку можно поставить рядом и удолить пары дочерних обьктов. Может можно как то по другому?
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение Paul Siberdt 15 фев 2017, 13:41

Можно обойтись тупо булевым массивом и проверкой, занята ли конкретная ячейка (элемент).
Этим избавите сцену от груза лишних объектов, апдейт - от лишних проверок с коллизиями и тегами, код - от лишних 95% букавок.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Помощь в логике

Сообщение istreloi 15 фев 2017, 15:29

Немного не так, Нужно проверить не только занята она или нет, а скакими она граничит и у каждой проверить как она повернута.
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение Paul Siberdt 15 фев 2017, 15:33

Ну, заведите массив не булей, а интов, где цифры от 1 до 4 будут обозначать повернутость. :)
Плюс 5 строчек кода.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Помощь в логике

Сообщение istreloi 26 мар 2017, 19:28

Всем привет! Подскажите пожалуйста ) Значит есть модель персонажа анимированная присоединяю ей префаы через через загрузку из папки ресуры делаю их дочерними по отношению к персонажу, но проблема в том что при разных анимациях префабы присоединяются под разными углами по отношению обьектов родителей, хотя при состоянии покоя тоесть если модель не анимированна то присоединяются так сказать без погрешностей в углах по отношению к родителю. пробовал присоединять и при анимации покоя перса(анимация в один кадр где перс вобше не двигается ) не помогает.Естественно еще при создании модели перса и моделей амуниции и оружия учитывал углы все нулевые на своих местах.Вот и вопрос каким метадом можно припарентить модель(префаб ) к другому чтоб намертво и без искажений углов, ноя так подозреваю это анимация виновата.
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение samana 26 мар 2017, 20:10

Если я правильно понимаю, то вам нужно дополнительно устанавливать поворот (локальный) для тех объектов, которые цепляете к анимированным частям.
Чтобы не запоминать локальный поворот и место в пространстве родителя, обычно делают объекты-пустышки, которые заранее расположены и развёрнуты так как надо, а дополнительные части цепляются за них.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в логике

Сообщение istreloi 27 мар 2017, 07:16

Да все верно samana , Но я использую в место пустышек скелет модели(суставы) изначально распологал их(суставы )таким образом чтоб при прискваивании координат сустава модель была на нужном месте и при присваивании углов сустава тоже не смещалась и была повернута как нада).А пустышки это лишние обьекты. Но спасибо попробую с ними.
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение istreloi 06 апр 2017, 07:06

Всем привет! Подскажите пожалуста, значит создал упровляемого персонажа локацию и бота противника, грубо говоря три го с дочерними и скрипты, при запуске выдает 45 Draw Calls примерно 45 -54 и фпс 110 - 130. А если я хочу ставить не одного упровляемого персонажа а 3-6 и ботов не один а 3-10.То фпс упадет до 30-10?
Естественно я не ставлю сразу всех ботов на карту а подгружаю из из папки ресурс по мере прохождения локации тоесть примерно постоянно на карте 2-4 бота.
А теперь вопрос это нормально что уже при 3-х го такой фпс и Draw Calls или уже пора задумоваться об оптимизации?

правда бот выпускает ракеты 20 щтук и от каждой я сделал дым это примерно 20 спрайтов дыма в секунду, где у каждого есть скрипт изменения размера прозрачности и небольшой сдвиг по координатам(типа ветер небольшой) и примерно через 3 секунды он удоляеться + я создаю дырки от пуль на любой поверхности( дераться примерно 10 сек) и лужи крови от ранений при поподании(держаться 20 сек). может это все слишком много для этого движка?
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение samana 06 апр 2017, 19:37

Поищите информацию о том, от чего зависит drawcall. Насколько я помню, на это влияет кол-во материалов и наверняка что-то ещё, но я не знаю. В документации что-то есть https://docs.unity3d.com/ru/530/Manual/ ... ching.html, наверняка есть и куча советов в сети.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Помощь в логике

Сообщение istreloi 06 апр 2017, 20:58

Благодарю за ответ samana!
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение istreloi 04 сен 2018, 10:43

Всем привет!Подскажите пожалуйста как пользоваться [RPC]?
Делаю так:
Сервер
void OnGUI(){
if(GUI.Button(new Rect(10,10,10,10), "model")){
NetworkView myNet = new NetworkView();
myNet.RPC("my_function", RPCMode.All, "model1");
}
}


Клиент
[RPC]
public void my_function (string temp){
bla....
bla.......
}

Если что у меня юнька 4)
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение istreloi 04 сен 2018, 11:15

Всем привет! Подскажите мне как лучше реализовать реакцию травинок на игрока и других ботов?
вариант 1) вешаю микро скрипт на каждую группу травинок который срабатывает либо на коллайдер, либо работает в апдейте постоянно сравнивает координаты игрока.
2) в скрипте игрока через коллайдер ловлю касание с травинкой и запоминаю ГО травинку в переменку своих ГО из массива ГО(массив ГО примерно 50 штук внутри) - для чего запоминать? (для того что - травинку отгибать плавно обратно когда игрок её уже не касается) потому что тупо отгибать её сначала резко в одну сторону задавая угол отгиба когда игрок коснулся травинки, а потом задавать угол когда травинки уже не касался это грубо(нужна плавность).
Прошу совета(нужна максимальная оптимизация) пишу для слабых андройд устройств.
это нужно не используя терейн!
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение waruiyume 04 сен 2018, 13:02

Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Помощь в логике

Сообщение istreloi 04 сен 2018, 14:06

не то! травинки должны возвращаться в исходное положение. Травинка это не шейдер и не физ упругий динамический объект а просто меш.
КАКИЕ ШЕЙДЕРЫ!!!! я выше писал! ЧИтайте внимательно!!!
Аватара пользователя
istreloi
UNец
 
Сообщения: 34
Зарегистрирован: 15 апр 2014, 15:46

Re: Помощь в логике

Сообщение ilka 04 сен 2018, 15:09

КАКИЕ ШЕЙДЕРЫ!!!! я выше писал! ЧИтайте внимательно!!!

Да капец раздражает когда с первого раза не понимают.
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

След.

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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 16