Возможно, условие у тебя выполняется и функция выполняется (но только один раз, или короткий промежуток времени), но потом условие "isGrounded == false &&..." не является истиной и вызов твоей функции не выполняется. В этом случае:
"if(myTimer <= 0 && isGrounded == false){ callFunction = true; Debug.Log("Call The Function is true"); } if(callFunction == true) { CallMyFunction(); Debug.Log("Call The Function"); } "
либо так, если тебе нужно вызвать функцию через какое-то время после того, как объект столкнулся с землей: "if(isGrounded == false){ myTimerCountDown = true; Debug.Log("Start timer countdown"); } if(myTimerCountDown == true) {
Собственно они уничтожаются, да не все. В чем может быть дело? Некоторые просто вылетают за стену, не понимаю от чего их поведение так зависит. Точнее нет, возможно понимаю, с фпс как-то связано, лол. Но как запилить чтобы нормально работало?
либо делать стенки толще и/или пули больше, чтобы коллайдеры пуль не проскакивали коллайдеры стен. либо делать все больше. Такой эффект наблюдается, не только от низкого фпс, когда у тебя пуля и ее коллайдер перелетает коллайдер стены, но и когда щаг перемещения пули больше ширины стены. http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
либо делать стенки толще и/или пули больше, чтобы коллайдеры пуль не проскакивали коллайдеры стен. либо делать все больше. Такой эффект наблюдается, не только от низкого фпс, когда у тебя пуля и ее коллайдер перелетает коллайдер стены, но и когда щаг перемещения пули больше ширины стены.
Я по другому решил проблему, снял триггер со снарядов и вместо этого:
Такой вопрос. Как можно скрипт заставить читать допустим ini файлы и применять то, что там написано к подходящим переменным ? Т.е В скрипте есть переменная A которая равна нулю. А в файле написано что эта переменная имеет значение 1 и нужно что-бы скрипт применил значение из файла. Бадабум!
Ребят, привет сидел дня три, разрабатывая игру на конкурс, в итоге решил отказатся от идеи.
Вопрос только для профессионалов!
После того как вы были завлечены дерзкой фразой и жирным шрифтом приступим). Так вот суть, по нажатию клавиши у нас создаётся, в определённой точке объект с коллайдером. Для понимания - лужа воды. Если мой персонаж находится в "луже"(будем так называть) и он бьёт током, то лужа тоже становится наэлектризована, Enemy получает урон (Всё это сделано и работает, ибо легко, точка в которой создаётся лужа, берётся из Rayhit.point, а лужа создаётся Instatuate , создаём клоны префаба, на префабе скрипт)
Так вот, всё бы хорошо, но потом я понял, если создать два объекта лужи рядом, должна получатся одна большая лужа, которая может быть наэлектризована ( и соответственно Enemy получит урон)
Пытался через коллайдеры сделать - херня, через теги - тоже ( через теги можно бить по лужам всем с тегом "Water" например, но но это проблемно ибо распространяется на все лужи даже расположенные не рядом)
Я думаю тут нужно программированиt логики цепных реакций, вот только как? " Кто в страхе живет, тот и гибнет от страха. " Леонардо Да Винчи
Сообщение отредактировал WPhoeniXW - Пятница, 06 Февраля 2015, 03:31
WPhoeniXW, на профи не претендую, но есть мысля можно сделать через габаритные контейнеры, не задействуя физику с коллайдерами, вот так: 1.Все Renderer'ы создаваемых луж собираем в список. 2.При создании новой лужи проверяем, пересекается ли её габаритный контейнер с контейнерами уже созданных (циклом foreach прогоняем по списку уже созданных луж).
при создании лужи:
Код
Bounds b1 = GetComponent<Renderer>().bounds;
foreach (Renderer r in allWaterRenderers) { Bounds b2 = r.bounds; if (BoundsHitSomeWhere(b1, b2)) //проверка на пересечение { //лужи пересеклись. //тут добавляем условие, если одна из этих луж - наэлектризована, электризуем и вторую. }
Если лужи совсем плоские, на разных высотах друг от друга и их пересечения никак не ловятся, можно габаритные контейнеры у них для проверки самому задавать, потолще:
Код
Bounds b1 = new Bounds(transform.position, transform.localScale); //вместо transform.localScale свой Vector3 с желаемой шириной, толщиной, высотой
Если форма луж сходна с примитивными - кругом, квадратом, то можно вот так.
вот такое подходит для квадратов, правильных многогранников и кругов
Для прямоугольников, звезд и тд. фигур, описываемых функциями также можно вычислить расстояния от границ одной лужи, до границы другой (потяжелее будет :)). http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
перечислением в сто строк - спокойно: a[0] = new gameitem(); a[1] = new gameitem(); a[2] = new gameitem(); ... a[99] = new gameitem();
или ты javascript в c# переводишь? нееее... все равно не понятно, почему без цикла так принципиально? http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
MANMANA, Я думал, что цикл лишний и что есть решение лучше
Циклы для этого и нужны, ни капельки ни лишний.
Добавлено (08 февраля 2015, 01:09) --------------------------------------------- Всем доброго времени суток. Есть вопрос.
Пытаюсь сделать систему передвижения click-to-point. Ну, как в Диабло, например. Делаю в 2D, персонаж - спрайт. Сделал так: по нажатию кнопки создается объект, к которому движется персонаж. Однако у меня проблемы с transform.LookAt(); :\ Все работает четко, но спрайт персонажа поворачивается боком. >.<
Так, моя система отстой. :\ Казалось бы все шик, но блин, в ней же нельзя начать двигаться к другой точке, не пройдя путь до предыдущей, лол. На полпути не выйдет сменить направление. И что-то придумать не могу, как это исправить. Как заставить объект двигаться к новой копии префаба, а про старую забыть? >.<
Сообщение отредактировал choopie - Воскресенье, 08 Февраля 2015, 02:08