Вы видите копию треда, сохраненную 13 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ну так в инспекторе посмотри где твоя картинка? Скорее всего ты забыл сделать parent - ом твой canvas
я так и знал!!
Приче тут мои игры. Featured для лучших игр. Если это лучшая игра на unity... ну ок.
Тащемта этот раздел нужен не для того, чтобы продать игры, а чтобы показать, что на юнити можно сделать дофига всего. В данной игре сорт оф симуляция жидкостей.
Да и если в шоукейсе показывать Дримфолл и эскейп фром Тарков — это отпугнёт 2д-индюков.
Тут даже общественность признала, что юнити мобильная параша без графония.
Firewatch
>На пике просто рисунок.
А что есть красивый графон, как не совокупность просто рисунков?
>В реальности там лоуполи кал.
Так сказал, будто там графон - кал, потому что лоуполи.
Хорошее лоуполи в миллион раз лучше зебропараши, сделанной школьником.
"кал, патамушта юнети" - ну ты должен сам понимать силу этого аргумента, лол.
>>241367
понравилось такому. а у меня это энам! хотя в итоге я особо не занимался артистизмом и склепал половину на коленке за 15 минут, чтобы посмотреть работает ли вообще.
У движка есть серьёзные ограничения на полигональность, поэтому у игродела нет выбора. Лоуполи это не его выбор, а единственно возможный вариант.
Поэтому все игры на юнити выглядят одинакого. Разве что 2D отличаются благодаря художникам.
>одинакого
Кого, простите?
Для мобилок, лоуполи - всегда единственно возможный вариант, если ты делаешь игру, а не демку для топовых девайсов. И говорить, что игры выглядят одинаково, потому что лоуполи... ну ты понел.
Как ты ближайшую ячейку из произвольной координаты доставал, им там под сишарп было ЛЕНЬ функцию адаптировать, похоже
Как узнать, говорю, координату ячейки в которой зеленый крестик, например, находится. Метод проебался при импорте энтузиастами либы в шарп, а мне в голову ничего кроме костылей которые исполняться будут по полдня, не лезет.
Или ты нихуя не ту же либу, что и автор блога юзал?
Это понятно, меня интересует менее ресурсозатратный метод нахождения этой точки, так как этих точек может быть 40000, и в лоб проверять дистанцию до каждой и выбирать наиболее короткую очевидно не вариант
Теорию графов читни, как я смутно помню из универских времен, она очень простая, и на твои вопросы отвечает.
Полигон это многоугольник. Триангл это треугольник, например максовский экспортер в обж позволяет выбирать сколько точек будет в полигоне.
вполне нормально. просто глянь вар, там такие огронмые горы неспроста нельзя делать, чисто левелдезигн
Кстати, я смотрел warcraft 3, так и не понял как сделаны горки: это 3д тайлы (как в доте 2) или это какие-то кубические тайлы, или просто такая карта высот?
> это 3д тайлы (как в доте 2)
зыс
карта высот там для "холмов" только, для склонов там тридэ
бляяяяяяяяяяя анончик я хочу делать карты в варе давай зделаем и по гарене порубимся!!
>>241471
ты че. не спаны используй, а просто результаты триангуляции Делоне. потомучто только между ней и строятся ребра.
но вообще это только для кординаты, если хочешь знать высоту то либо просто сделай их в сцене и рейкасти(лично я один хуй это делал один раз, можно и за кадром пол секунды подождать), либо спизди любую растеризацию и пускай её в несколько тредов. например та что я спиздил.
а. нашел. вообще та функция для определения того каким треугольника принадлежит координата. после отсева треугольников можно этим глянуть высоту. если тебе только для одной координаты.
public void ButtonClick()
{
Debug.Log("BUTTON PUSH");
}
На каждую кнопку повесил этот скрипт - он не срабатывает. Что я упустил?
вообще. кажись я дважды жопой прочитал и не в ту степь побежал. если хочешь вот только проверить принадлежность точки, то просто держи все-все кординаты центров поделенные на квадратики и проверяй не все разом, а лишь ближайшие. самый простой метод.
Как такую картинку нарисовать?
вообще, кстати, с этим и можно поизьебываться. например все координаты можно представить в виде сорт оф картинки и проверять не каждую координату по отдельности, а предварительно сделать паттерн для проверки на определенную дистанцию и проверять колечко за колечком у "пикселей" картинки от нужной точки.
так ты подставляй в AudioSource.clip нужный тебе. повесь там компонент на обьект, держи в этом компоненте ссылки на все нужные тебе звуки, пронумеруй их там удобно. а потом приказывай "суй сюда это и играй мне".
>Углы сгладишь
Знать бы как их еще сгладить. Такое чувство, что придется использовать какую-нибудь библиотеку обработки изображений, чтобы рисовать карту высот.
в интернете все есть
Учусь юнити и одновременно пилю РТС своей мечты клон варкрафта. За неделю разобрался как реализовать поиск пути, выделение юнитов рамкой и атаку по клику мыши. Теперь настало время реализовать автоатаку.
Так вот. Есть юнит. Этот у этого юнита есть переменная Target. Если юнит заселекчен и произошёл клик правой кнопкой мыши то кастится луч, и если луч столкнулся с чем то имеющим таг "player2" у меня два типа юнитов, одни условно первого игрока, другие условно второго, то в переменную Target записывается этот самый враг, по которому кликнули, ну а дальше осуществляется код преследования/атаки.
Но это только по клику. Надо чтобы если на каком то расстоянии от юнита оказался объект с тагом енеми то он автоматически записался в переменную Target со всеми вытекающими. Как это сделать? Или может нужно делать вообще не так?
Пикрил - фрагмент кода для атаки по клику, для более наглядной иллюстрации того, как противник становится целью юнита.
Появилась идея.
Хочу повесить на юнит цилиндрический триггер. Если в триггер будет попадать что то с тегом "player2" это что то будет автоматом записываться в переменную Target.
Но у меня не получается новый меш навесить на юнита. Пишет что это похерит префаб, так как меш(модель у него уже есть). Что делать?
По туториалам одного чувака. Вот ссылка на первый в серии, там в принципе все довольно понятно https://www.youtube.com/watch?v=2wgeDQlwnQ0
Не за что. Не подскажешь, как навесить триггер на объект чтобы реализовать автоатаку? Или может быть другой способ определения объектов с заданным тегом на каком то расстоянии от юнита?
Я конечно не спец, но что тебе мешает сделать RayCast вокруг объекта, а потом в Update проверять есть ли кто с тэгом enemy? Если есть, то пошло поехало.
Не то написал, хотел посоветовать попробовать использовать не RayCast, а SphereCast каким-нибудь способом. Но тут подумал, а зачем вообще? Просто вокруг объекта сделать сферу (или куб), который будет реагировать на коллизии с enemy.
Я так и хотел. Как это сделать? При попытке добавления нового трехмерного объекта к префабу юнита мне говорят что это похерит префаб.
Я слепой, не увидел. А зачем тебе вообще новый меш? Добавь дополнительный коллайдер нужного размера на уже существующий объект.
То есть, создай gameObject, а в нём ещё два дочерних gameObject'а. В одном будет один коллайдер, в другом другой. Потом можно для каждого коллайдера свой скрипт написать. Что-то типа такого.
Добавил, но он загораживает террейн от рейкаста, который определяет точку, к которой должен двигаться юнит при нажатии правой кнопкой мыши. То есть я навесил коллайдер-сферу на юнит, задал ей радиус пять и теперь в этом радиусе вокруг него если заслелекченным юнитам кликать двигаться они не двигаются, потому что луч уперся в этот коллайдер, а движение происходит только если луч столкнулся с коллайдером террейна.
Тебе надо использовать IgnoreRaycast layer, он позволяет RayCast игнорировать определенные коллайдеры.
Если можешь в английский, то посмотри в документации, там как раз твой случай http://docs.unity3d.com/Manual/Layers.html
Если по сути, то в RayCast у тебя последним параметром указывается bitmask, в которой каждый бит указывает будет ли луч игнорировать этот слой или нет.
Внутри:
/library/
Не работает.
Посмотрел видос https://www.youtube.com/watch?v=SkKPlfUoyu8
Сделал .hgignore
Внутри:
syntax: glob
.sln
syntax: regexp
^Library/*
Всё равно нихуя не работает. В каком месте я криворукий долбаёб?
бамп вопросу
https://www.youtube.com/watch?v=3xWfBgtI_BA
Можно даже вилколайдерами фейкнуть такое. Хотя на видосе скорее всего скриптовая логика. Плюс, обрати внимание, борта могут находиться на разной высоте, так что сила прикладывается не к одной точке.
Нашел их несколько штук. На рашкинском ни одного. Может у кого завалялось?
Нашел какое то видео, на 4 трассерах летает, но мне бы текстовое объяснение, в восприятие английского голоса не могу. https://www.youtube.com/watch?v=r9OEZmbD9q0
http://answers.unity3d.com/questions/456400/how-to-face-hovercraft-physics.html
Вот тебе текст, читай, воспринимай, тоже на четырёх райкастах. Вообще честнее всего было бы прикладывать силу физоном, но физон это пиздец, так что лучше фейкать.
Как вы объясняете для себя, что даже такая простая сцена из лоуполи моделей замылена сильней коснольного высера.
По-моему не шарят авторы юнити, которые вместо адекватного сглаживания запилил гауссово.
Может потому, что изкоробки в юнити только хардварный мультисэмплинг, а всё, что сверху - уже зона ответственности уебанов ассеты таскающих?
Эта хуйня не работает?
Нужно эту булевую переменную учитывать в другом скрипте, повешенном на другой объект.
GetComponent уже весь измучал. Не работает.
КАК ЗДЕЛОТЬ?
public myscript myscript; //должно совпадать с твоим именем скрипта
if (myscript.myFuckingBool) { fuck(yourMom); } else { pissOn(yourFace); }
Спасибо, анон. Отдал на растерзание тебе свою мамку и подставил ротешник под струю.
Теперь расскажи, пожалуйста, в двух словах, как это называется. Конструкция? И когда это лучше применять?
>как это называется
Хуй знает, просто доступ к переменной другого класса.
>когда это лучше применять
Лучше никогда, правильно было бы создать событие и подписаться на него же. Но нам ли не похуй? Таким же макаром можно вызывать паблик функции, и менять паблик переменные.
> правильно было бы создать событие и подписаться на него
А потом еще и репостнуть, блядь. Каша из ивентов не нужна.
> Лучше никогда, правильно было бы создать событие и подписаться на него же.
А вот это уже будет лишним.
Пили вебм срочно!
А ты знаешь что в блендере другая система координат? Ну, другое направление осей.
Почему бы просто не импортировать в юнити дом, с вложенным объектом "дверь", и не кинуть на дверь скрипт, который поворачивает ее трансформом на 90 градусов, если в дверь уперлась коллизия игрока и он нажал "е"? Я собираюсь так делать, так как в анимациях ничего не понимаю.
1) Каким-то образом получить координаты игрока
2) Измерять расстояние от игрока до врага.
3) На определенном расстоянии повернуть врага к игроку и стрелять.
Подскажите как это реализовать на C#.
Игрок - твердое тело с капсульным коллайдером, которое движется методом трансформ.
1) transform.position
2) Vector3.Distance(a,b)
3) Quaternion.LookRotation(Vector3.RotateTowards(...))
Теперь, минуточку. Скрипт кидается на врага. Значит, в нем должно быть что-то типа
положение_игрока = Get(Player) transform.position
если vector3.Distance(положение_врага,положение_игрока) < X
то Quaternion.LookRotation(Vector3.RotateTowards(координаты_игрока))
и начать стрельбу
?
Вчера для реализации автоатаки мне посоветовали использовать сферический коллайдер-триггер, который бы записывал в переменную Target первый попавшийся объект с тагом Enemy.
Возникла другая проблема - рейкаст, который был нужен для навигации юнитов не проходил сквозь коллайдер автоатаки и это создавало некликабельную для мува зону вокруг юнитов. Проблема решилась заданием слоя коллайдеру автоатаки, игнорируемого рейкастом.
Но возникла следующая проблема: юниты у меня выделяются не только рамкой, но и щелчком по юниту, простой функцией OnMouseDown. Коллайдер автоатаки по сути находится поверх модели юнита, на которую повешена эта функция и не даёт кликнуть по ней. Что посоветуете?
сажа приклеилась.
Засунуть коллайдер автоатаки под модель юнита? И можешь показать как дела идут, всегда интересно за продвижением других наблюдать.
Так там же коллайдер автоатаки это сфера. Был бы цилиндрический я бы сделал его высоту меньше высоты юнита и все было бы круто.
Ну я разбил то, что в моём понимании является стратегией на кучу пунктов и методично реализую по одному. Сейчас как уже сказал реализована навигация, выделение одного юнита кликом, выделение юнитов рамкой, атака "фокусом", почти доделана автоатака. Как только доделается автоатака прикручу ХПбары и можно будет записывать небольшую демку, на этом блок системы управления юнитами будет закончен.
Следующие пункты это строительство зданий, производство юнитов и добыча ресурсов. Правда пока у меня наметки того как собираюсь это реализовать только на бумаге в виде блок-схем и псевдокода.
Пробовал. Проблема в том что у капслу два параметра - радиус и высота. Радиус влияет не только на ширину цилиндрической части, но и на радиус полусфер сверху и снизу. То есть даже выставив высоту коллайдера в 0.001 и радиус который мне нужно капсула просто превратится в ту же сферу, закрывающую юнита.
Почему разрабы не добавили цилиндрический коллайдер?
Я совершенно не шарю в юнити, недавно начал, но почему нельзя выбирать юнита кликая по коллайдеру?
Коллайдер больше юнита, это же по сути область автоатаки. Он будет селектиться от клика рядом с ним тогда.
Террейн, в максе/блендере.
какой тебе там плавности надо? разрешение повысь
Пикча отклеилась:
чтобы получить адекватное значение, разумеется. пойди прочитай про то что делает каждое из них. тайм.дельтатайм это время прошедшее с предидущего фрейма. чтобы значение было пропорционально фпс.
>нет плавности
Инструмент эррозия. Это который с каплей мочи на пикте. Обсыкаешь террейн @ ноешь, что фпс упал.
>>241923
>>241922
События и только события. Я как раз ебусь с событиями в разных потоках, но в итоге это не я с ними ебусь, а они ебут меня. Так что пусть анон сделает события, событий много не бывает. Добавь событие, сделай это ещё раз.
И как мне это поможет? Дело не в том, что дверь двигается в другой плоскости, а в том, что поворачивается не только дверь, но и весь дом.
Это вроде как координата. А вообще, строчка с интернет-урока. Вроде как работает, но зачем все сделано так, понять не могу. Я бы просто написал "if Input Getkey W { transform (0, 0, speed)", например. А у него целый урок написан таким макаром как на пикче, и что это все и зачем я понять не могу, хотя про компоненты по отдельности вроде читал.
вроде бы еще пишут что с фиксед апдейт дельта тайм не нужен. А так, как я понял, тайм дельтатайм дает возможность сделать ускорение, разгон персонажа со временем, но у меня так не сработало.
Apply Root Motion?
Там наверное проблема в отношении родитель-потомок. Я не занимался анимацией в блендере, но если что-то поворачивать относительно чего-то, разве не нужно указать какой объект поворачивается и относительно чего?
инпут это, дурень. ты все неправильно понимаешь. если не понимаешь сиди и набивай шишки, хули. сделай все с нуля.
Подкиньте внятных уроков, с разжевыванием кода, с подробными объяснениями и тд.
Не, не то, тут и идет чисто разжевывание кода, мне бы в полевых условиях, чтобы попутно что то создавать.
Видеоуроки уровня GD, ну а вообще я по каждому вопросу гуглю какой-нибудь видеоурок, и так разбираюсь.
Я просто не знаю за что взяться, хочется и того, и того, все попробовать, нужно выбрать отправную точку.
На сайте юньки есть видеоуроки. С азов и до вершин.
До них смотрел всякие картавящие лекции с шипящими микрофонами примерно год - сделал какую-то двадэ ссань, которую после первого пробега даже доделывать не захотелось.
Сейчас прошло время и я смотрю официальные уроки, стал успешным человеком, хорошо понимаю что я вообще делаю в данном куске кода.
Чтож, пойду искать картавых, а до оф. уроков мне далеко, совершенно не могу в английский.
Нашел тут учебник, вроде годный, может пригодится еще кому. unity в действии. мультиплатформенная разработка на c# http://rghost.ru/6hXfXDBXh
Создал вторую косточку для всего остального дома и заработало, лол.
Несколько стульев, как всегда. Вращать скриптами при нажатии - transform.Rotate(), либо прихуярить джойнтов и вращать дверь по физике.
Использовать компонент Animator
materials/resources
На uni1 висит цилиндрический trigger collider autoattackcollider. На autoattackcollider висит скрипт autoattack:
void OnTriggerEnter(Collider other) {
if (other.gameObject.CompareTag("player2"))
{
Target = other.gameObject;
}
}
Как мне передать в Target геймобджект правильно?
Пикрил: структура unit1.
Подскажете как передать в Target переменную - у меня наконец то появится автоатака и эта заноза в голове перестанет меня мучить.
Потому что с красным всё работает лучше!
В общем, не нашел я библиотеку. Все так или иначе используют System.Drawings который не дружит с unity. Единственный велосипед http://imageprocessor.org/ не умеет даже рисовать простейшие линии.
Разработка моего безумно важного проекта отменяется.
ах ты бестолочь. это не оно не умеет рисовать простейшие линии, это ты не понимаешь как их рисовать!
У меня вдруг случилось страшное озарение. Наверное, у него каждый тайл - отдельный меш.
http://docs.unity3d.com/ru/current/Manual/ControllingGameObjectsComponents.html
>Обращение к другим объектам
Пусть иногда они и существуют изолированно, все же, обычно, скрипты отслеживают другие объекты. Например, преследующий враг должен знать позицию игрока. Unity предоставляет несколько путей получения других объектов, каждый подходит для конкретной ситуации.
Связывание объектов через переменные
Самый простой способ найти нужный игровой объект - добавить в скрипт переменную типа GameObject с уровнем доступа public:
public class Enemy : MonoBehaviour {
public GameObject player;
// Other variables and functions...
}
Читни страницу, не оно?
Нет, совсем не оно.
Потому что это для примера, что мне в итоге нужно. Передать таргету значение геймобджекта с тагом "player2". А как передать из скрипта на дочернем объекте в скрипт на основном я не знаю. В этом и проблема.
Причем вот так все работает. То есть коллайдер у меня распознает геймобджект с тегом "player2" попавший в него. Но как передать его в переменную Target, которая в скрипте на родительском объекте я не знаю.
===============
Unity generated
===============
Temp/
Library/
=====================================
Visual Studio / MonoDevelop generated
=====================================
ExportedObj/
obj/
.svd
.userprefs
/.csproj
.pidb
.suo
/.sln
.user
.unityproj
.booproj
============
OS generated
============
.DS_Store
.DS_Store?
._
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
===============
Unity generated
===============
Temp/
Library/
=====================================
Visual Studio / MonoDevelop generated
=====================================
ExportedObj/
obj/
.svd
.userprefs
/.csproj
.pidb
.suo
/.sln
.user
.unityproj
.booproj
============
OS generated
============
.DS_Store
.DS_Store?
._
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
> Inventory.inventory inventory = new Inventory.inventory();
>tfw нет фантазии
> error CS0542: `Inventory.inventory.inventory': member names cannot be the same as their enclosing type
Вот например вид изнутри, как видите, есть весьма сложные для меш коллайдера формы.
Наркоман? Ты же сам выбираешь меш для мешколлайдера, это может быть меш уровня. Естественно конвекс проставлять не надо.
Не уж то тут гитом никто не пользуется?
Спасибо, анон, оказывается вся хуйня была из-за галочки конвекс, без нее заебца.
>Как с ними после смерти говорить? Мне нужно.
Очень хочется пошутить про некромантию, но не получается.
После включения регдолла трупы сильно смещаются от начальной позиции поэтому коллайдер придётся двигать как-то по-другому
Что заюзать, что бы 3д графон сделать привлекательнее?
Первый раз в 3д/юнити кун.
хотя не очень то я понимаю всю эту теорию графов, да.
придумают же
Пиздец я горю нахуй, где блять найти эту функцию?! Помогите пожалуйста.
С подливой с тебя. Сходи в анриал-тред.
Во, поменял тип текстуры на "текстура" и появилось то, что я искал. Спасибо анон!
Бамп вопросу. Кнопки все еще не реагируют.
Перед выходом StopAllCoroutines вызывай. У меня помогло как-то раз
Починил. В паузе timeScale обнулял, это влияет на waitforseconds, при загрузке меню timeScale оставался равен нулю.
Толку от нормалей, если у меня такие зубцы
>>242234
Меш один, но для тайлов нужно каждый квад отдельно. Поэтому такие нормали.
Прогирываю с вас и вашего движка! лохи! дауны! петушня! ни грфона нормального, нихуй. только поддержка которой вы битарды и хикки никогда не воспользуетесь. пидары, купились на то что будет легко! возле параши!!!
Смотри анриал-тред.
Вырезал дверь в отдельный меш, полез в гугл, а там хуйпойми какие костыли. Почему так сложно просто повернуть дверь? Кость хотя бы работала. Пиздец, где-нибудь есть гайд по простейшим анимациям в блендере под юнити? А как просто растянуть прямоугольный меш? Почему анимации такие непонятные, за мильон лет 3д моделирование можно было бы сделать понятнее, не? Помогите.
Нигде не могу найти даже алгоритм растеризации линии. Везде только для линии толщиной 1 пиксель.
Добавляешь свою дверь на сцену. К ней добавляешь animator. Открываешь окно Animation, создаешь новую анимацию. Ставишь время на одну секунду, выделяешь дверь, крутишь ее. Открываешь окно Animator, выбираешь вкладку Parameters. Добавляешь параметр триггер "Open". Добавляешь в Animator новое пустое состояние, делаешь его дефолтным. Делаешь transition от него к твоей анимации открывания двери. Выделяешь, в conditions выбираешь свой триггер. Делаешь transition от твоей анимации обратно к пустому состоянию.
В коде когда надо открыть дверь пишешь GetComponent<Animator>().SetTrigger("имя твоего триггера");
Пиздец, что за монструозная конструкция? Это все, чтоб повернуть одну дверьку? А если таких дверек будет 200? Можно как-нить легче? Типа только последней строчки.
Quaternion rotation = Quaternion.Euler(90, 0, 0);
YOBABAYADWER.rotation = rotation;
//FUCK LERP, FUCK THIS DOOR, FUCK ALL OF YOU, WE MAKE IT ROTATE!!!
Я не в тему спрошу и вообще я мимокрок, но почему нельзя сразу написать так?
YOBABAYADWER.rotation = Quaternion.Euler(90, 0, 0);
В этом языке не очень шарю, потому и спрашиваю.
>почему нельзя
Потому что можно. Нельзя пытаться отдельно задать одну из осей, а сразу всё вращение можно.
Ладно.
>А если таких дверек будет 200?
Копируешь 200 раз один префаб двери?
Ебать ты немощный. Это система анимации в unity. Лучше тебе поскорее ее освоить.
Если совсем дурак, можешь сделать так. Для этого нужен вот этот скрипт https://github.com/UnityPatterns/AutoMotion
Не пизди на меня, слыш!
ну так ты че за хуй то такой я не догоняю
Проблема в том что при разной частоте кадров мое перемещение Lerp, происходит с разной скоростью, например в билде под PC скорость ~500 кадров, под Android ~60 кадров, соотвественно разница в скорости перемещения очень ощутимая и ломает весь геймплей, почему так, ведь я использую Time.time, а не Time.DeltaTime. Ведь течение Time.time, не зависит от скорости прорисовки кадров?
Как мне добиться чтобы перемещение было за нужный мне период времени, независимо от фпс.
Братишки, я не правильно написал, не скорость разная, а время за которое перемещается мой объект разное. Анончик помоги разобраться и придти к успеху.
это точно не поможет, тогда движение будет зависить от времени прорисовки кадров, это как раз то чего я хочу избежать.
лол
Какой же ты тупой, блядь. Не знаю что ты себе напридумывал про дельтатайм, но если прибавлять его к t каждый кадр то за секунду набежит единица. Больше помогать не буду дебилу, который даже не попробовал вставить в код дельтатайм, а сразу прибежал ныть в тред.
это не помогает,инвалид, неужели ты думаешь я не пробовал с дельта тайм, я же про него сам написал,епта блядь
Меня инвалидом называет ублюдок, который в лерпе каждый раз обновляет точку А и хочет через 0,5 секунд получить половину расстояния? У тебя больше нет союзников и свою ссаную 3 в ряд ты никогда не доделаешь. Пойду нюхать кокс.
ты точно инвалид, иди поспи.
там код замазан, на код вообще не смотри, он не имеет значения, я его прикрепил что-бы думалось проще.
Опущенец, gem это не последнее сохраненное состояние Transform, а ссылка на объект. Transform не структура. А вывод какооой?
что тебе нужно поспать, или научиться читать все буквы в тексте. Вопрос пиздец разжован, пишите блять то про дельта тайм хотя в вопросе явно про это написано, то блять про табы на скриншоте который вообще значение не имеет, и на котором я для инвалидов замазал лишний код что-бы у них настройка не сбивалась, то предлагаете перейти на уе5которым пользуюсь еще с 3 удк
точнее один буйный пишет, явно.
Это /gd
Тебя надо носом в говно ткнуть? В цикле gem.position обновляется каждый кадр, долбоеб ты тупой. Лерп будет как тебе надо работать только если точка А и точка Б неподвижны.
в первом кадре
Игреки:
А (gem.position) 0
Б (target) 10
t 0.1
gem.position=1
во втором
А (gem.position) 1
Б (target) 10
t 0.2
gem.position= уже не 2
на т=0.5 будет уже хуй знает что а не 5.
Пришел советов просить, когда тебе указывают на ошибку пищишь Я НИ ТУПОЙ Я НАПИСАЛ ПРАВИЛЬНА ТЫ ТРАЛИШ, пидор неблагодарый.
та это осталось от эскперементов над функцией, я по разному пробовал.
Блять ну наконец-то, вот ты уебок, спасибо теперь я понял. Иди нюхни коксу и поспи, присниться как я тебе отсасываю.
а конкурсы вообще для быдла уровня нульчебляди
какая же ты бестолочь, а! ты свою карту высот сгладить не можешь что-ли? даже самым бестолковым методом вроде "схватить высоту соседей и поделить её на их колличество".
если хочешь рисовать линии потолще то в чем проблема? возьми рисование обычной линии и добавляй там например по 1 лишнему пикселю по сторонам от центрального.
> возьми рисование обычной линии и добавляй там например по 1 лишнему пикселю по сторонам от центрального.
А как узнать, что лишние пиксели не выходят за рамки текстуры?
проект распидорасило-2
>кококо блюпринты для быдла, движки для быдла, ооп для быдла, ассемблер для илиты
ты понимаешь, что ты можешь умереть, так и не выпустив ни одной игры?
Ты понимаешь что если я умру не выпустив не одной игры, то блюпринт с этого лучше не станет.
на одних принтах не придти к успеху, нужно уметь в плюсы, а когда сможешь в плюсы то смысла в принтах уже не будет, принты это для дизайнеров кароче или простых скриптов.
> умереть, так и не выпустив ни одной игры
>ассемблер для илиты
>родина дала им блюпринты
>хотим жрать говно
>писать игры
> умереть, так и не выпустив ни одной игры
>ассемблер для илиты
>родина дала им блюпринты
>хотим жрать говно
>писать игры
Толсто.
Потому что он свободный от задротства человек.
Давай ты сначала попробуешь так сделать, закономерно обосрешься, а потом уже предложишь что-то более похожее на рабочее решение.
Так вот, в чем вопрос, как визуально эту угловатую стенку справа подогнать ближе к виду скалы?
вангую подгоревшую видео
была такая хуйня, используемая видеопамять доходила до BAD SECTOR и всё пиздарики
Бля, совсем не исключено, он перегревался миллион раз просто, а еще там термопрокладка под видеочипом отсутствует.
Экспорт хейтмап ---> вордл мащин импорт хейтмап ---> экспорт меш.
>>242377
Спасибо. Ну суть как раз в этом match3 гемплее, думал сделать разные ветки, типа:
Камень - булыжник - гора, и.т.д.
Ну и потом сделать взаимодействие между этими объектами.
Пока не знаю как работать с 3д графикой особо, хотел бы как-то все визуально лучше оформить. Пока не понимаю куда копать.
Мною было замечено, что шов создается всегда, после использования RecalculateNormals(), даже если исходная моделька уже содержала бесшовные нормали. Как нормали на гранях залокать или еще что сделать, чтобы шва не было как на примитиве "plane"?
Молю тоха, выручай, уже сутки эту хуйню гуглю. Уверен что все просто, а я просто чего-то не заметил.
ещё бы там не было шва, ведь с нормалями всё в порядке, но группы сглаживания работают с соседними точками, а тут соседней точки тонет, ведь это край чанка
в юхути есть прямой доступ к мешу из скрипта.
http://docs.unity3d.com/ScriptReference/Mesh-vertices.html
схорони меш в .obj и погляди номера вертексов на гранях, установи у них нормали ровно вверх через скрипт
лютый костыль, сейчас кто-то будет пиздеть меня сапогом моего народа, да хуле, я б сам себя за такое пиздел
Понял твою идею, попробую. Правда зачем схоронять меши в .obj, если можно прямо в скрипте по позиции вертекса проверять на грани ли он
Попробовал, работает отчасти, я хотя бы понял где проебался.
То есть для того чтобы сделать правильно, я должен сначала построить всю меш целиком, посмотреть нормали у вертексов, которые будут гранями, и поставить такие же в чанках.
> Правда зачем схоронять меши в .obj, если можно прямо в скрипте по позиции вертекса проверять на грани ли он
затем что я костылист со стажем
> посмотреть нормали у вертексов, которые будут гранями, и поставить такие же в чанках
скорее всего заработает, да
Какой же хуёвый левел. Пописюнил тебе на дорожку
да на, че. потратил минут 40 на простенький прототип из 100 строчек кода.
http://rghost.ru/8r8QZQrhK
>>242666
на самом деле много причин.
навмеш юнити нельзя строить в рантайме, а я хочу большой процедурный уровень. а-стар и рейн и многие другие решения конечно можно, но а-стар дорого, плюс его неудобно менять. а рейн хоть и бесплатно, но он срань. мог бы купить а-стар но мне у него не нравится то как хранится результат растеризации. я например могу довольно легко добавлять новые области проходимости связанные с ростом, или с наклоном поверхности, чтобы были области для ползанья на корачках, или лёжа, или чтобы карабкатся. да и делаю его потенциально так чтобы в навмеше хоть какой-то сорт информации содержался о том что символизируют эти дырки.
ну и отдельно хочу иметь возможность заново строить отдельные квадраты навмеша. чтобы например игрок ушел, а там деревня появилась пока он там сохранялся у костра. и навигация есть.
ну и конечно кининаримас
Дак это понятно, но кто в здравом уме будет делать карту высот ирл дюн, которые постоянно меняются от ветра.
ебашь как справа, только ебани текстурок пару еще, и сразу вид скалы будет (можно и без текстур вообще, будет такое а-ля бумажное лоуполи). а слева у тебя мыльная хаймапная хуита, а не скала.
>>242783
Занимаюсь сейчас чем-то очень схожим. Собираюсь делать следующим образом:
1) Рисувать/генерить в world machine карту высот террейна
2) Создавать меш террейна "чанками" из карты высот
3) Генерить карты высот для деталей, для каждого чанка скорее всего банальным перлин шумом с волнами
4) Использовать карты высот деталей в качестве деформации, скорее всего еще и с тесселяцией
5) Рисовать следы игрока/ветер в карты высот деталей уже в игре.
Интересно как будешь делать ты, а потом сравнить результаты.
wip пикрелейтед
Ну сейчас буду пытаться из гугл земля выдирать карту высот, в некоторых местах она весьма детальна.
>навмеш юнити нельзя строить в рантайме, а я хочу большой процедурный уровень. а-стар и рейн и многие другие решения конечно можно, но а-стар дорого, плюс его неудобно менять. а рейн хоть и бесплатно, но он срань. мог бы купить а-стар но мне у него не нравится то как хранится результат растеризации. я например могу довольно легко добавлять новые области проходимости связанные с ростом, или с наклоном поверхности, чтобы были области для ползанья на корачках, или лёжа, или чтобы карабкатся. да и делаю его потенциально так чтобы в навмеше хоть какой-то сорт информации содержался о том что символизируют эти дырки.
ну и отдельно хочу иметь возможность заново строить отдельные квадраты навмеша. чтобы например игрок ушел, а там деревня появилась пока он там сохранялся у костра. и навигация есть.
Представляю, как уже сейчас тормозит твоя параша, а ведь еще даже гейплея нет
да никак не тормозит на самом деле, потому что пускаю все это в тредах. разве что чтобы построить навмеш всей текущей сцены в 50х50 метров надо подождать секунды полторы-две, если так всю сразу. хотя можно и ещё ускорить, или брать самплы не каждые 0.1 метра. ну а над поиском путь пока работаю, че. интересно же.
если интересно, то на самом деле никаких проблем с этим нет, зависит от частоты изменения же по большей части. если хочется совсем заебись то можно в Compute Shaders полезть и там уже производить сложные вычисления эрозии.
http://www.youtube.com/watch?v=IbxSIf8_3dA
От души тебе, друже! Сделал я так - допустим я хочу сгенерить чанк, в котором 10х10 вертексов, я сначала делаю этот же чанк, но с одной дополнительной строкой/колонной на каждую сторону, дольше вычисляю нормали, а потом уже создаю нужный мне меш, используя дату из дополненного чанка. Так для каждого чанка.
А когда идет запуска на ведре, то вообще нихуя не возваращет? Будто файл даже не прочитал.
Пришел учить юнити, в итоге весь день просидел в terrain machine. Как же сложно сделать что то нормальное в нем, + экспорт карты высот на терраин в итоге дает слегка не то что ожидал.
В смысле? Файл то создается.
Хм, а как ты эти волны/дюны создал, градиент? Покажи свою связку нодов что-ли.
Этот шейдер был на форже, так как я вообще их никогда не писал, плюс модель тут - стандартный Plane. Суть такая -
есть 2 хаймапа. 1й для террейна (маленький со сглаживанием), 2й для деталей (волны и следы), они складываются. Остальное это всякие записи в околюжинг, т.к. модели нет, а без нее все это выглядит однородной парашей. То есть менял в рантайме я только хаймап деталей, с помощью SetPixels, который к слову так себе, и надо бы opengl direct calls подзадрочить, чтобы быстрее обновлять текстуру. Сейчас допиливаю генерацию мешей тайлов, а на них буду использовать тот же принцип с картой деталей, что я описывал.
Починил это дерьмо с помощью #if CONDITION #endif
Не думаю что есть решение проще, просто я хочу сделать псевдо-динамический песок. Если 3й день в юнити, то я бы делал что попроще.
Да я и не хотел собственно делать динамику, я изначально просто спросил, каким способом легче всего замоделить дюны.
Ну тогда это в корне меняет дело. Можешь попытаться генерировать карту высот в World Machine, можешь вручную, если не нужна большая территория, ну или на худой конец из гуглземли. Получив чб карту, вгружаешь ее в стандартный террейн. Самый просто способ как по мне.
В гуглземлях именно дюны плоские, там же точность низкая, в 10ки метров ошибки. С машиной весь день борюсь, как сделать дюны, пока не понял. В ручную каждую дюну моделить геморно, мне бы 2-3км квадратных для начала.
На чем варик писали?
А где можно почитать о чанках, как их подгружать, вот сделал в ворлд машине 49 карт высот на территорию в 28км квадратных, как их подгружать и тд?
та выбора то мало. если у тебя нет минусовых чанков то просто двухмерный массив, если есть то Dictionary.
Я даже не знаю какой скрипт показывать чтобы было понятней.
Минусовые чанки? Мне бы какой нибудь тутор, а то я так мало что пойму.
в тредах только. поищи использование Thread или ThreadPool. гдето в том что они делают что-то лезет в апи юнити. у чего-то у чего есть main
Значит, что обращаться к апи движка можно только из основного потока. Ошибка из-за того, что ты создаешь дополнительные потоки и оттуда лезешь в апи. Либо запускаешь что-то по таймеру, для него тоже стартует дополнительный поток. Используй корутины, Люк.
Ну или не чанки, а какие нибудь региональное деление, издалека лод, рядом нормальный террейн.
да какой тут тутор то. вот опа есть чанк чего-то, например карты высот. как к нему обратится? по int x, int z. в экзотических случаях ещё и по int y. чтобы мы знали где он и куда его пихать. а как бы их так хранить то удобно? если например земеля у тебя конечная, то известно где нулевой чанк и тогда можно хранить их в массиве. говоришь "хочу чанк[0][0]" и оно лезет в массив и дает тебе этот чанк. а если земеля бесконечная, как например в менкрафте, то разумней хранить её в словарике, где ключ это, например, структ, который представляет собой координаты чанка.
Ты объясняешь так, как будто это элементарщина, но для человека, который только в юнити пришел, это звучит архисложно, ты же не ждешь от меня, что я вот так сходу напишу скрипт подгрузки чанков, я даже не знаю как террайны то создавать через скрипты, а ты уже о назначении карты высот на него.
http://docs.unity3d.com/ScriptReference/Random.html
https://msdn.microsoft.com/ru-ru/library/system.random(v=vs.110).aspx
Ну блять, я это читал, а как выбрать число без промежутка? Смотри, мне нужно выбрать либо -1, либо 1, то бишь либо отрицательное, либо положительное число. Мне не нужно чтобы иногда попадал нуль. Только -1 и 1.
Вот тебе максимум велосипед, рандом в пределах -1 до 1, только целые числа, если ноль, повторяем рандом.
Или еще такой, i=0, рандом между 1 и 2, если равно 2, то i=-1.
>если ноль, повторяем рандом
Я так и сделал, но думал что есть какой то более элегантный способ.
Совсем забыл о массивах, делаешь массив, выбираешь рандомное из него.
http://www.cyberforum.ru/csharp-beginners/thread409958.html
принято, ожидайте
То есть ты из ворлд машины еще и меш тянешь?
А мне понравилось.
Тем что на нем нельзя использовать хаймапы деталей раз а уж тем более менять высоту исходя из них , работать с unity terrain не в статическом режиме - зашквар два. Еще вопросы?
каждый из вас еба
Я же расписывал, что хочу сделать песочек динамическим, чтобы ебаный след оставался, поднимая песок рядом с собой, чтобы волнами он скатывался с дюн, для всех этих радостей я использую хаймапы деталей, которые пишутся в реалтайме, а потом с помощью шейдера, деформируют меш(и). В стандартном террейне можно деформировать карту высот, которая будет с точностью в 2 пикселя на метр. Это конечно 10 из 10, но что-то не очень. Не говоря уже о том, как вся эта история будет тормозить на обычном террейне. Но прочитать тяжело, все понимаю.
нойс будет по экрану и блум
вот нет чтобы как все сделать текстуркой след, нет, я игру делать не хочу, я хочу симулятор песка тормозящий адово
мхех
GameObject[] gameObjectArray = GameObject.FindGameObjectsWithTag("UiDialog");
foreach (GameObject go in gameObjectArray)
{
go.SetActive(false);
}
но если я попробую точно так же их сделать активными появляеться нулл референс эксепшн. Я попробовал и так и сяк и понял что если я сделаю паблик переменную геймобжекта и туда его перетащу то могу свободно дизейблить энейблить его без нулл референс эксепшена, но добавлять десяток паблик геймобджектов это как то тупо, реквестирую способ как можно сделать подругому.
не, ты их задизейблил, теперь только через прямое обращение доступны
если уж так хочешь избежать глобала, сделай своими силами отключение их видимости и нажимания
или пихни их все в один обжект детьми и вот его держи в глобале, и дизейбли его
не, но ты можешь юзать GetComponent<SeduceYourMom>().enabled = false
отключаешь компонент отрисовки и он не отрисовывается, очевидно. не забудь отключить обработку клика
Сделал как ты писал, сделал пустой геймобджект на канвасе и засунул туда всех детьми, его и подключил, и дизейблю активлю все работает, спасибо анончик. Не ожидал что оно при дизейбле сразу все дизейблнет и не прийдеться пробегать по всем детям. Теперь все логично и структурировано.
>>242970
Да-да, обновлений вообще нет, винду менял несколько раз. Может поставить семёрку 86?
Очевидно что если у всех работет то и у тебя заработает на 64 битной 32х битная вобще не поддерживает больше 2гб оперативки просто скачай ровную винду.
Что мешает сделать свой материал для terrain'а?
>GetComponent<SeduceYourMom>().enabled = false
DEPRECATED
http://docs.unity3d.com/ScriptReference/GameObject.SetActive.html
>32х битная вобще не поддерживает больше 2гб оперативки
И эти люди делают игры. Что же с нами стало.
мои благодарности, анончик
плоть раздела 96-97 годов производства, они ж может и не застали х86
как родаки комп купили там уже семерка 64тая стоит
да речь как раз шла о том чтобы избежать дизейбла обьекта, отключая работу компонентов
На самом деле х32 может адресовать только 4 гб памяти, но нужно понимать, что если у тебя есть видеокарта на 2 гб, то рамы больше 2 гб винда уже не увидит. А если есть ещё аудиоплата со своей памятью, то всё становится ещё печальнее.
> что если у тебя есть видеокарта на 2 гб, то рамы больше 2 гб винда уже не увидит
ниче не понял
как связаны рамы и видеопамять?
Только больше мне не следует отвечать в тред, находясь на нулевой.
http://docs.unity3d.com/ScriptReference/Behaviour-enabled.html
Видеопамять есть VRAM и она тоже адресуется из операционки. А потому из доступной теоретически памяти нужно вычитать VRAM. Ситуация - у меня в системе 8 гб RAM, 512 мб видеокарта и х32 винда. По итогу, винда видит 3.5 гб рамы. Даже меньше, лол из-за ёбаных округлений.
Нихуя не шаришь
@
Назови кого-нибудь школьником.
А я ещё думал про pae-режим вспомнить. В общем, нахуй. Мамке скажи, пусть тебе винду переставит, ты слишком тупой для этого.
Энаблить-дисаблить отдельные компонены никто не запрещает. SetActive это функция геймобжекта а не компонента.
а ведь ты прав, шельмец
что-то полезное узнал, день не зря прожит, блаадарю
и модельку зделал
к успеху иду, блять
и за это уже рассудили, к сожалению
Ничего что у видеокарт своя память? По твоему если на ПК с 32 битной системой с 2ГБ ОЗУ поставить видеокарту со своими 2ГБ памяти - винда не загрузится?
GetComponent<Mamka>().Ebat();
Как сократить такую конструкцию до одной строчки?
inb4: SendMessage
Нихуя себе, раз операционка адресует память видюхи то ее оперативу можно использовать для прикладных программ? Тогда доступной памяти в ПК должно быть RAM + VRAM а не RAM - VRAM. Не зря говорят что юнити убивает нейроны.
http://answers.microsoft.com/en-us/windows/forum/windows_7-hardware/maximum-ram-for-windows-7-32-bit/4286bbfa-6851-e011-8dfc-68b599b31bf5?auth=1
Читай, школьничек, просвящайся. Винда загрузится благодаря механизму, который резервирует некоторую часть RAM, по ссылке пишут, что 0.5 гб, по факту это плавающее значение. Но вот работать на такой системе уже будет мучением. Если уж в этом вопросе и мелкомягким не веришь, то могут тебе сказать только одно: иди нахуй, идиот. >>243002
Тебя это тоже касается.
Эм, я с навмешем только вчера игрался в первый раз, но мне кажется можно настроить области проходимости по росту и наклону поверхности, парочкой скриптов, и вообще для каждого объекта свой навмеш кинуть.
>>242797
ну и построить навмеш для внезапно появившейся деревни тоже можно с заданными параметрами кинув на нее скрипт соответствующий, если есть желание заморочиться.
Тьфу, блять, все
https://msdn.microsoft.com/en-us/library/dn986595.aspx
вот это нашел, но что-то идет не так
try{
GetComponent<Mamka>().Ebat();
}catch(Exception e){
}
Признай что ты обосрался. Переходить по ссылкам никто не будет и что там написано неизвестно.
Тебе дали неопровержимые доказательства, а ты продолжаешь обсираться.
И причем тут видеопамять? PCI устройства - это как usb-устройства подключенные к одному хабу. По твоей логике если подключить больше 2-х гигабайт USB памяти, виндовс ее не увидет?
Pony Island
Да уж не более дураки, чем ты, ведь ты-то законченный имбецил.
https://en.wikipedia.org/wiki/Shared_graphics_memory
> This article does not cite any sources. (May 2009)
Беспруфно
> This article may need to be rewritten entirely to comply with Wikipedia's quality standards. (December 2011)
А нормально обьяснить
> This article's factual accuracy is disputed. (December 2011)
Протухло
> Most early personal computers used a shared memory design with graphics hardware sharing memory with the CPU.
ясн
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/GraphicsMemory.doc
Пруфы.
>>243062
Прост пишу из 2016, здесь винду уже выпустили, которая умеет шарить память. Походу в ваших 80х ещё такого нет.
Винда может и без видюхи работать если что. Тут то без шареда не обойтись. Но ты найди пека для учебы без видюхи.
Судя по тому, что я вижу - гораздо лучше, чем у вас, у вас там сплошные дауны нахуй.
> июнь
короче
предлагаю
прогуглить что там за число было и начинать канкурсы в это число
и офффициальный праздник ещё в гд сделать
Это гибридный вариант. Это типа файла подкачки используемого драйвером. Эту память все еще нужно копировать в видеокарту.
скажите как правильно пиариться чтобы все ставили 5 звезд
https://youtu.be/psn8OdjeDrI
Языки на каком уровне знаешь, как изучал? Во всех учебных пособиях есть лабораторные с массивами и циклами. Пробеги какой-нибудь "С# за 21 день", проще станет.
чем тебя лод то не устроил?
>>242937
террейн юнити вполне поддается изменениям. кстати менять карту высот и хуйню вполне можно в рантайме. да и тесселяцию можно устроить при желании.
https://www.youtube.com/watch?v=OFVMJFechdw
>>242900
ну как сказать. тут пожалуй я неправильно построил предложение. обратится к NavMeshBuilder.BuildNavMesh() можно в рантайме и он даже построит навмеш, но это неймспейс UnityEditor, так что этот вариант отпадает.
можно попытаться делать дырочки в навмеше через обстаклы, но этот вариант не годится в виду того что я даже не могу сказать юнити каким должен быть базовый навмеш. по моему все что можно из него вытащить это его вертексы и треугольники, но сунуть по своему усмотрению нельзя. во всяком случае я за дня три поиска не нашел ничего подходящего.
>>243011
да, много чего интересного можно сделать через лееры навмеша. но только если уровень известен с самого начала.
а я против этого.
>>243083
че? удобно же. перетянул в проект и сидиш довольный. тут тебе и сцена с обьектами тут тебе и хуйня. один из лучших элементов юнити.
> private var earthDistance : RaycastHit;
Private float, а вот дальше не могу понять.
бгг
-Vector3.up == Vector3.down
ты значение сунуть забыл туда, как далеко рэйкастить. читай же.
Physics.Raycast(transfrom.position, Vector3.down, какоенибудьчисло)
хотя там много вариантов.
можешь написать
RaycastHit earthDistance;
Physics.Raycast(transfrom.position, Vector3.down, out earthDistance);
и тогда в earthDistance можно будет прочитать много всего интересного.
Ассетофоб порвался
Что то все равно ничего не выходит. Вроде переписал, но не работает.
3 пост в теме. http://www.unity3d.ru/distribution/viewtopic.php?f=18&t=2248&st=0&sk=t&sd=a
Вышло наговнокодить это пик.
Ким Кардащан прилагается
не хочу читать срань с этого сайта. я дам тебе очень важный совет. ты можешь написать Debug.Log(любаяхуйня); и читать это в консоли. чтобы знать где же там что. вот напишешь в конце Debug.Log(terraDist.distance); и смотришь соответствует ли оно ожидаемой логике, вместо того чтобы гадать.
хуй даже знает что там у тебя за запросы. нарисуй схему в пэйнте.
Да проблема в том, что в принципе не работает, а информации по ховербордам и всякой парящей над поверхностью фигне на честной физике, а не на скриптах, маловато, а самому придумывать еще знаний маловато.
Сейчас попробовал дебаг.лог, тишина абсолютная.
Ну смари, в руке лежит у рыцаря меч. Может лежать топор и дубина. Я в скрипте игрока создаю массив геймобджектов и урон, который зависит от геймобджекта, на само оружие скрипт кидать не хочу. Рыцарь должен понять, что у него лежит в руке, прибавить свои модификаторы урона и потом сообщать этот урон врагу. У врагов тоже разные спасброски к разному оружию.
ну так добывай знания эти. я то че тебе про дебаг сказал. чтобы ты хоть представлять мог что же пошло не так и попытался исправить. кстати FixedUpdate с большой буквы.
> с большой буквы
Курва! Спасибо заработало. Не думал что си шарп на столько регистрозависим.
Все сиподобные языки регистрозависимые.
не то что бы это такой уж шарп. в норме то у шарпа если написать base и обращаться к базовому типу, то там методы высвечиваются. но если обратится к MonoBehaviour то там разумеется не будет Start, Update и так далее. на самом деле там просто внутри самого юнити наделали какой-то неведомой хуйни с этими методами и похоже оно их исполняет ориентируясь на стринг метода, если он вообще описан. а если не описан то ничего не делает.
>>243269
ну так. урон то у тебя игрок наносит, оружием твоим. в классе с игроком пишешь "ЕбанутьОружием(GameObject это)" и описываешь что происходит, если ебануть текущим оружием это. ты же сохраняешь куда-то переменную о том какое оружие сейчас?
Вот именно, что я знаю, как прописать "ЕбанутьОружием(GameObject это)". Я не знаю, как игрок должен понять, что за оружие у него в руке сейчас.
ну так. у тебя же есть переменная "оружие которое щас в руках"? вот ты как оружие в руки то суешь?
на самом деле наплыв каких-то разговорчивых мудаков которые спрашивают как ногу поставить на каждом шагу.
Я у тебя хочу узнать, как оружие в руку засунуть и назначить "оружие в руках", лол.
Извините.
Никак. Ты идиот, пытающийся что-то понять, не зная даже азов программирования. Такие не нужны даже здесь. Когда будут РЕАЛЬНЫЕ вопросы, а не бред из разряда "как пёрнуть", тогда и спрашивай. Это касается всех мест, где могут подсказать по программированию.
Ок, спасибо. Ждите меня в стиме.
Что ты ему объяснить пытаешься? Он и метод ебанутьвоврага знает только из видеомануалов школьников. Их надо смело посылать нахуй учить программирование.
Как раз таки, это тебе не блюпринты лепить.
Скриптинг под большинство популярных движков в целом схож. У юнити своя архитектура, построенная на gameobject'ах. В юнити за тебя сделана вся работа по обеспечению отрисовки объектов, шейдерам и т.п. В общем, сделано то, что обычно велосипедостроители делают на xna десятилетиями. Если выбирать, то, конечно же, я бы посоветовал юнити вместо monogame. Меньше мороки. В десятки раз меньше времени потратишь на ебаную основу. Потому что в юнити это сделано за тебя.
Окей, спасибо.
Тащемта в любом нормальном движке так. Просто MonoGame это бесполезный кусок говна. Как SDL только для C#.
Ты дебил или прикидываешься?
SDL есть и под C#.
Честным физоном всё-таки пиздец всё делать. По-любому нужны "маневровые" райкасты.
>>243453
Ну или не честный, а хотя бы выглядящий реалистично, примерно как летающие байки из звездных войн. Сейчас у меня есть два прототипа, один летает с кодом на пике, второй на этом >>243255 . Первый скачет вверх вниз, второй чертовски нестабилен, приходится широко двигатели расставлять, чтобы не переворачивался.
А пик от первого забыл.
>хочу видюху
Это и есть причина, почему похоже на видюху.
>>243458
>второй чертовски нестабилен
Так, может, просто сила слишком большая прикладывается?
Да я что то вообще намудрил, нестабильный при слишком большой силе просто улетает вверх, при средней крутится вперед назад, как будто силы приложены не равноудалено от центра масс.
>при слишком большой силе просто улетает вверх
Я в этом случае прикладываю отрицательную силу, лол. Вообще охуенную тему ты поднял, с физикса попроигрывать. Больше ориентируйся на второй вариант, замени адррелатив форс на AddForceAtPosition, чтобы сила прикладывалась в позиции маневрового райкаста. Ну и в формуле должна присутствовать минимальная высота. У меня прикладывается по факту пять сил - базовая антигравитация, 4 маневровых райкаста (если вдруг один видит землю на дистанции мин\2, то сила удваивается + прикладывается дополнительная антигравитация). Надо запилить рулёжку мышкой, как в джеди академи и обработку переворачиваний. Ну и потерю террейна заодно. На вебм удвоение сил, кроме гравитационной.
Я еще на одном форуме формулу видел, расчета необходимой силы для подъема крафта исходя из его массы, силы гравитации и количества двигателей. А вот с приложением отрицательной появляется раздражающий момент, крафт начинает дрожать вверх-вниз.
> исходя из его массы, силы гравитации и количества двигателей
А смысл? На большой массе управление становится дубовым, уже не тот фан. Каждый "двигатель" прикладывает силу независимо от других и учитывать остальные в этом процессе как-то избыточно.
>крафт начинает дрожать вверх-вниз
Как на вебм с прыжками? Вообще, два прыжка и всё устаканивается, без никакого дрожания. Не нужно прикладывать доп. гравитацию постоянно, только если мы далеко от террейна. И тогда не прикладываем дополнительную антигравиацию. Собственно, синие линии - дополнительная сила движков, красные - двойная сила, нет линий - идём на чистом "антиграве".
Побороть бы клевание носом без смещения центра тяжести и будет заебись.
Cложно, не нужно. Физон всё равно начнёт глючить на скорости.
При этом для WP3, WP4, CORE, HULL я уже имею непосредственные ссылки.
Попробуй этот. Масса 6, драг 2.
http://pastebin.com/291VShkB
Это другой скрипт, здесь нет даже попытки "быть честным", что с физикой, что вообще. И постарайся не переворачиваться, ну либо почини эту хуйню сам.
raycasters равен null, то есть нет такого объекта. Разбирайся с этим массивом.
тупо по индексу i нету объекта
Они у меня есть, ну как точки, 4 цилиндра.
Хуй знает, может поможет
http://answers.unity3d.com/questions/17477/right-click-button-using-gui-class.html
Ну типа если все эти функции находятся в Update, то он их все должен успеть обработать по очереди за 1 кадр. А если разделить на отдельные скрипты, то разве он не станет их обрабатывать одновременно?
Тред достиг своего апогея.
Есть. Только она недокументированная(?). По крайней мере в документах я ее не нашел.
Нужно использовать компонент Event Trigger. Там у него в скобочках написан тип аргумента. Если сделать функцию с таким аргументом, то можно ее использовать.
public void OnPointerClick(BaseEventData data) {
var pointerData = (PointerEventData)data;
Debug.Log(pointerData.button);
}
Не скажу.
на 666
if (Input.touchCount > 0)
{
Debug.Log (Input.touchCount);
}
но ничего кроме 0 консолька не пишет, а значит мои клики по экрану не интерпретируються как тачи, как быть?
Зачем вообще кому-то помогать? Самое бесполезное занятие
Да ладно парни, я просто аутирую в юнити. Игру свою я наверняка не сделаю, а если даже вдруг, то постыжусь её распространять.
У таких как ты нет стыда.
Давно я так не смеялся.
бамп
Я с офуроков начал, там шарп разжёвывают именно с той точки, с какой его можно припихнуть в своих проектах в юньке.
Может через пару лет я поумнею и пойму, что стоило учить шарп отдельно, а потом уже начинать учить его в юньке, но сейчас я доволен собой и полученными навыками.
Сам решай.
Хочешь офуроки дрочить - делай шарп.
Если ты жавапрофи и сам управишься - делай на жаве.
Очевидно же, что вы как маленькие?
А, забудь, по жаве тоже офуроки есть.
>диалект
шарп в юнити тоже "диалект". потому что сколько лет юню не прогай, а все равно хуй понятно в каких местах какие конструкции новых версий языка не поддерживаются, че там с какими версиями clr и вообще рожь, овощи.
шарп в юнити это не шарп в студии => "диалект"
Типичный "артист" делающий контент на юнити.
да старый просто, в отличии от той хуйни что нагородили в жаве.
Ты мог нагуглить ответ на свой вопрос за пару минут, но предпочел ждать 2 дня ответа.
Что значит не работает SetActive ошибка или ничего не происходит?
using UnityEngine.UI; прописал?
В игре почему-то канвас скрыт изначально. Геймобжект неактивен в смысле. Но в лог пишентся состояние (Debug.Log ("Инвентарь не показан")/Debug.Log ("Инвентарь показан");)
>>using UnityEngine.UI;
Не катит, в жабаскрипте вроде import
Ну если в эдиторе галочка в инпекторе снята то будет по дефолту скрыто
Я долбоеб, но не настолько. Канвас становится неактивным именно при старте игры, независимо - нажимал я клавишу, прописанную в скрипте, или нет.
Если в лог пишеться состояние (Debug.Log ("Инвентарь не показан")/Debug.Log ("Инвентарь показан");) который вызываеться только в >>244036 этом месте, то очевидно что оно заходит в этот иф, а значит ты как то проебался в условии вхождения в иф.
И как же я проебался? Уже 4-й час проебуюсь. А если хуянуть что-нибудь типа Renderer.enabled?
Я пытался делать через GameObject и, собсна, его же и гуглил. Ну и ничего не находил, потому что GameObject ни в цикл foreach не умеет, ни свойства GetChild не имеет.
Спасибо анону: >>243986
Который дал пример. Понял, что свой объект вместо класса GameObject надо как класс Transorm инициализировать. А там уже можно или через цикл мутить, или через свойство GetChild работать.
Так что тут моя совесть целиком чиста.
Красно дякую тобi, хохлоаноне. Я зрозумiв, де помилився. Я чомусь провтикав семiколон пiсля if (Input.GetKeyDown)
Лучше тебе этого не знать.
в гугле, где. ссылки держать наоборот хорошо. напиши и посмотри!
алсо лучше избегай огромной хуйни сделанной из структов, коим Color является.
>Как мне получить доступ к конкретному объекту "1", который находится в объекте "SelectGun"
>google: how to get GameObject child
>миллионы ответов
>я гуглил
Или в Dictionary<объект, переменная_или_контейнер_с_переменными> или пересмотри свою логику и добавь эти переменные в свои элементы
Попробуй сделать нормальный дебаг с состоянием. Что-то типа такого:
[code]
...
if(Input.GetKeyDown(Keycode.I))
{
showInventory = !showInventory;
inventoryObject.SetActive(showInventory);
Debug.Log("Show inventory == " + showInventory);
}
[/code]
окно проекции сцены становиться ортогональным и импортируемые текстуры по дефолту становятся спрайтами, наверняка и еще что-то меняется, я заметил только это замечать подобное не старался.
Какие элементы? Это property drawer для строки. Я написал свой велосипед, который для string рисует поле выбора объекта и сохраняет в эту строку его имя (выбранного объекта). В самом классе property я кешировал этот выбранный объект чтобы подставлять его в поле и не загружать каждый раз.
Нет пути чтобы определить какой именно элемент массива сейчас рисуется. Единственный вариант это каждый раз грузить объект, что не ебически тормозит при каждой перерисовке инспектора
потому что в шарпе структ на самом деле довольно тормозная параша с ограниченной полезностью и её главная польза проявляется разве что тогда когда надо передать что-то по значению а не ссылке. если хочется хранить просто массив из цветов то лучше взять что-то готовое, вроде картинки в юнити, или забить и сделать себе 4x float[][] и удобный интерфейс к ним.
Гуглю, пытаюсь решить.
У вас такое было, девелоперы?
>в шарпе структ на самом деле довольно тормозная параша
пруфы?
>её главная польза проявляется разве что тогда когда надо передать что-то по значению а не ссылке.
Впрочем не надо. С тобой и так все ясно.
>>244220
Хуево делаешь.
>поле выбора объекта
property должна быть с типом выбираемых объектов, а не строкой.
>Вообще тупо как-то. Для каждого property должен создаваться свой экземпляр property drawer. Я так это понимаю. А иначе какой смысл в них?
Смысл в том, что property drawer нужен для описания логики отрисовки свойства на основе данных, которые данное свойство содержит. И ничего более.
>пруфы?
интересно какие же пруфы тебе нужны. создай например себе хранилку с 5-7 полями разных типов и коллекцию на 100к таких хранилок и поделай с ней всякие интересные операции, сравнение там, а потом поменяй структ на класс.
у структа конечно есть варианты когда его использование более адекватно использования класса, но в большинстве случаев класс будет производительней.
Готовь свой ротешник. Мощная струя урины уже летит к тебе на встречу.
простой FTB на 5 мбит/сек, ставилось минут 15.
>У структур есть ряд преимуществ перед классами, которые дают лучшую производительность приложения:
>- Структуры занимают меньше места в памяти, т.к. у них нет заголовка описывающий тип данных, указателей на таблицы виртуальных методов, а так же другие поля, необходимые для синхронизации и сборки мусора.
>- Структуры хранятся в stack’е (но в куче, если массив). Выделение памяти в stack’е происходит очень быстро: stack – заранее выделенный буфер памяти, в котором просто резервируется место по размеру структуры (в основном, на этапе компиляции) путём уменьшения значения в stack pointer (уменьшения, т.к. данные в stack’е хранятся задом-наперёд). Когда функция завершает свою работу, то «освобождение» всех переменных в stack’е происходит один махом путём увеличения указателя stack pointer на количество байт, необходимых для переменных. А выделение и освобождение памяти в куче – это огромное количество операций, в отличие от простого вычитания и суммирования.
>- Из-за того, что структуры хранятся в stack’е, они не требуют сборки мусора. Это сильно разгружает сборщик мусора и избавляет от проблемы фрагментации памяти.
Лучше начинать с 2д, особенно, если раньше ты ничего не делал. Это тебе говорит анон, который с конца 2014-го пытается сделать свой инди-хоррор, и у которого до сих пор еще нихуя не готово.
жопой читаешь что-ли. что же пошло не так? м? бестолочь.
реально структы хороши разве что для передачи параметров.
А блять, все понял. Хорошо иногда разговаривать самому с собой. Так же все делают?
вообще о том что касается непосредственно хранения передачи параметров и хуйни.
>>244323
каждый день. даже метод есть такой.
https://ru.wikipedia.org/wiki/Метод_утёнка
Пробовал ставить условие "если игрок вне зоны слышимости, SetDestination = координаты бота", но это конфликутет со скриптом поворота бота в сторону игрока, если игрок вновь войдет в зону слышимости, и бот начинает подергиваться, разрываясь между необходимостью повернуться в сторону игрока, и одновременно приводить свои координаты (в том числе и угол поворота) в соответствие со своим положением на тот момент когда он остановился.
Я сменил 3 движка, у меня развалилось 3 команды, плюс война. Так что йоба тут неуместна.
2д хоррор, слишком сложную ты себе задачу взял, даже если саму игру сделаешь, то напугать в 2д проблематично.
А тьфу, точно, а в чем проблема тогда, берешь тутор по фпс, добавляешь скримеров, максимум инди аля очередной слендер готов.
Ну тогда еще проще, добавляешь глючную физику, сраных собак, червя "ахтыжсукаблятьнахуй", убогий стелс и пенумбра готова.
Червь не добавляется. А вообще - чем можно напугать питурда? Скримеры и темнота нахуй не нужны.
а когда надо использовать значение как ключ ты тоже словарь на лист заменишь? м? тварь дурная.
Ты совсем конченый или притворяешься? Разница здесь обусловлена отличием в стандартной реализации GetHashCode и Equals. Переопределяешь эти методы в классе и в структуре и получаешь пикрилейтед уже с HashSet
тяжело тебе наверно. на самом деле тут уже разница становится смешной, но хорошо, смотри.
что же теперь пошло не так? м?
Нашел только один полный курс, но сука, охота убить делавшего человека, столько воды говорит, постоянные подергивания мышкой, хотет как в официальных уроках, медленно, четко, как для аутистов.
Спасибо, попробую, не думаю что осилю такой быстрый англ., но спасибо.
Пиздец, 3 часа думал как сделать, чтобы враги крутились вокруг плеера.
>Смысл в том
смысл в том, что property drawer позволяет сделать кастомный редактор для отдельного элемента. Какую логику сделать для этого редактора - это уже мое личное дело. А остальное ты сам придумал.
Теперь даже не знаю что делать. Смысл был в том, чтобы сохранить юнити объекты в сериализуемом стандарным c# классе, загружая его по имени (Resources.Load) при первом обращении.
Смирись уже, что классам со структурами в плане скорости нельзя тягаться
дети открывают для себя программирование.
почитайте чтоли чем value type от объектов отличается.
Делаю варкрафтоподобную стратению. Для хелсбаров решил использовать этот https://www.youtube.com/watch?v=87R0PziLDJ0&list=PLj0TSSTwoqAyOvc2zvdWNoO-jtMZkMDIC&index=2 урок. Но выдает ошибку "The variable healthbar of UnitHP has not been assigned.".
Я подумал ладно, назначим переменную не претаскиванием в инспекторе а через строку
HP_Bar = GameObject.Find("healthbar");
В итоге все юниты воспринимают хелсбар первого появившегося как свой, и меняется только он.
Кому не лень может либо объяснить ЧЯДНТ, либо подсказать другой способ реализации хелсбаров в РТС.
Как эти навмеши работают? Они заебись?
> The variable healthbar of UnitHP has not been assigned.".
Ну очевидно, ты не назначил текст. Покажи, что ты там накекал
поправка, на втором скрине я ещё не перетащил "healthbar" в переменную скрипта UnitHP HP_Bar
Сначала поставь себе задачу, разбей её на маленькие шаги, и ищи уроки по каждому. Я так учусь, пока вроде норм продвигаюсь.
Двачую.
Ты еще скажи, продумать все аспекты игры, составить тз и тд и тп.
>>244573
Бамп вопросу.
Вообще как я понял моя проблема в том, что скрипт либо не воспринимает хелсбар, даже после перетаскивания его в инспекторе в нужную перменную, либо почему то у всех юнитов воспринимает хелсбар первого как свой.
Нужно видимо просто правильно определить переменную типа GameObject, чтобы каждый юнит знал и менял свой хелсбар.
Всмысле, как? Внутри каждого юнита есть хелсбар, и есть скрипт отвечающий за ХП и меняющий локалскейл хелсбара. Вот тут структура юнитов и скрипт: >>244573
Алсо, если знаешь более надежный/правильный способ запилить RTS-like хелсбары буду благодарен. А то я уже наизголялся пытаясь этот способ заставить работать.
Глянь на канале Brackeys в цикле видосов Create Unity 2d Platformer там были реализованы хелсбары и враги, мб там что то подчерпнеш.
Я делаю шпейс шутер топ даун. Ты можешь летать во все стороны, направление корабля следует указателю мыши. Вопрос в том, как сделать нормально двигающийся фон.
Что я сделал:
1. Создал quad, на нее нацепил текстурку фона.
2. Прицепил квад к главной камере.
3. К камере написал скрипт следования за игроком (игрок всегда в центре экрана).
4. Затем к кваду я написал скрипт, который оффсетит текстуру по вектору, равному изменению движения корабля. ( velocity = new Vector3 (Input.GetAxis ("Horizontal") maxSpeed Time.deltaTime, Input.GetAxis ("Vertical") maxSpeed Time.deltaTime, 0); ) По крайней мере я себе это так представлял. Вектор не инвертированный, так как юнити походу уже оффсетит в противоположном направлении.
5. Все же на практике получается какая то хуета. По моей логике квад должен всегда двигаться вместе с камерой (а значит с игроком), но из-за оффсета, должна создаваться иллюзия того, что фон остается на месте. Но более менее не блевотно получается только если координаты вектора умножать где то на 6. Но ведь так не должно быть, я не должен ни на что умножать.
Так вообще делают, или я какую то хуету сочинил? Вроде все логично, значит я где то наговнокодил впрочем иначе я не умею же. Может удалить нахуй эту схему и сделать что то иначе? Например мне в голову приходит только такая альтернатива хотя я пока что не знаю как такое реализовать: текстура не будет оффсетиться, но если в камеру попадает пустое пространство или что там должно попасть?, то спавнится новый квад. Если старый квад уже не в поле видимости камеры, то он удаляется.
пик-анрилейтед
Да ебаный рот, там где нет запятых должны быть спойлеры, но я о них забыл пока копировал текст из другого тренда.
Они кажись перекатились, висит тред с сажей, что за наркомания блин.
Ахуенно, бро! Только вчера наткнулся на англоязычную версию и уже прям собрался читать её мучительно долго, скрепя зубами, со словарём и своим недо-интермедиэйт.
Добра!
Короче знаешь чо, попробуй перетаскивать объект не в инспектор ПРЕФАБА, а в инспектор ОБЪЕТКА который уже в сцене.
Значит где то че то лишнее, где то скрипт повторяется например, может ты случайно что нажал. Перепроверь еще раз все объекты и префабы.
Вот, например со слайдером. Нужный слайдер в нужном поле. В коде строчка "healthbar.value = 0.5f;"
И выдает ошибку Object reference not set to an instance of an object
В старте теста ради поменял value.
А вот вариант с UI. Первый скрин - структура юнита, второй - код. При попытке изменить размер хелсбара выдает ошибку о том, что переменная не определена и предлагает перетащить её в инспекторе. В котором, как мы видим, она уже перетащена.
>размер хелсбара
Это в смысле нанести урон? И что ты передаеш в setHealthBar? (В вектор3 первым аргументом).
В setHealthbar передается отношение текущего здоровья к максимальному. То есть если текущее здоровье равно максимальному, то отношение равно 1, и локалскейл зеленой полоски по Х будет 1, то есть без изменений. Если здоровья останется половина, то отношение станет равно 0.5 и зеленая полоска следовательно уменьшится в два раза.
Ошибка в 38 строке. Ошибка возникает при любой попытке как либо изменить локалскейл хелсбаров healthBar.
Попробуй просто в функции старт сделать локалскейл с точно задаными параметрами например (0.55,1,1) .
Пробовал, та же ошибка.
Проблема именно в том, что я видимо как то неправильно обращаюсь к объекту Bar. Может быть нужно инициализировать кодом, а не перетаскиванием в инспекторе. ХЗ.
Можешь подробнее написать как?
Вообще у меня работало когда я забивал и делал просто обычный трехмерный кирпичик зеленый вместо хелсбара и его тем же кодом, без изменений скейлил. Вот почему с кубом работает, а с UI нет?
GameObject.Find("helthBarRect").transform.localScale попробуй так его найти.название свое только поставь.
Скидывай проект. Ты где-то обосрался и по скринам не сказать где именно.
Я думаю, даже почти уверен что у тебя неправильно указан тип Bar'а. Попробуй поменять его с GameObject на Slider или типа того что то.
Два спрайта: треугольник ("Player") и квадратик ("ground0"). На первом Rigidbody2D, PolygonCollider2D, сам скрипт, не статик, не кинематик, не спит. На втором BoxCollider2D, не статик.
if (GetComponent<PolygonCollider2D>().IsTouching(GameObject.FindWithTag("ground0").GetComponent<BoxCollider2D>())) {
isTouch = "Touch Yes";
} else {
isTouch = "Touch No";
}
Скриншот из запущенной игры. Треугольник упал на квадратик и вот так лежит. Пробовал менять типы коллайдеров, эффект такой же.
Решил проблему, поменяв тег ground0 на ground. Два дня месил это говно, хуй поймешь почему все так получилось. Также пробовал тег test0, но все равно работало, так что дело не в циферках.
FindWithTag значит поиск по тегу который ты сам присваиваеш каждому обьекту на сцене.
Это я знаю. Вся соль в том, что он так находит только один объект и взаимодействует с ним. Я теперь использую foreach + findobjectswithtag, полет нормальный.
Я забыл написать, что у меня не один объект с этим тегом.
https://www.youtube.com/watch?v=44M7JsKqwow
666
Интересно, почему такой тренд неактивный? Хуюнити не котируется в /gd?
первое - класс геймобжекта, конкретно тут можно использовать для доступа к его статическим методам/свойствам/полям или вложеным типам
второе - поле MonoBehaviour которое хранит ссылку на го к которому этот мб прилеплен
Хочу отдельной камерой в NGUI подкладывать такие UITexture со своим материалом под элементы интерфейса, чтобы под ними был блур.
Заранее спасибо за помощь.
Максимальный опыт программирования - экспрешон2 в гмоде.
Сейчас курю юньковские туториалы для новичков по коду, очень нравится.
Но я бы хотел ещё вариант видеоуроков/русскую версию подобных уроков, чтобы прогнать их потом после оф-курса и проверить, не упустил ли я чего-нибудь.
Есть ли тут те, кто как и я начинал изучать с# с нуля прямо в юнити? Чем вы пользовались в своих нелёгких начинаниях?
знанием С и С++, лол
Да дохуя таких видеоуроков, пиздуй в гугал
Нет
Нахуя надо делать это пабликом?
public Pdior pidor { get; set; }
И с хуяли тогда юнити не видит такую переменную?
И постоянно ли тогда надо делать еще и так?
public PIDOR {
get {
return pidor; }
}
Pdior - это класс
pidor - это название
public - это уровень доступа, с ним ты сможешь достать эту елду из любого скрипта
Ты можешь просто писать
public Pdior pidor = 1;
Это все понятно.
Я не понимаю, почему в C# нужно задавать переменную паблик, если делаешь к ней { get; set; }.
Сейчас пришел к тому, что делаю привейты, а потом еще добавляю [SerializeField], чтобы переменная была видна в редакторе.
А еще приходится дописывать такую конструкцию:
public PIDOR {
get {
return pidor; }
}
Так вот, неужели в C# нельзя нормально делать геттеры и сеттеры приватной переменной, которая отображалась бы в редакторе?
Зачем вообще что то делать приватным? Ты все равно никак не регулируешь/проверяешь аргумент в 99.9% случаев. Мне эта хуйня с инкапсуляцией ни разу нигде не пригодилась.
Так в этом и суть, что в Java нормально все регулируется с приватными переменными, а здесь не пойму что творится.
http://edu.cbsystematics.com/ru/education/webinars
Могу еще предложить уроки на русском от майкрософт и от одного хикана:
https://www.youtube.com/watch?v=Px0Ues-i01U&list=PLb_z0cwoop9PmCM5o6HJxvKfLz9UFOSEx
https://www.youtube.com/playlist?list=PLczcTSDLfwNQCn2lmqmb3vefxq0Y0hdTb
Душевно, спасибо.
Бесплатная. Уже заканчивается, но потом можно будет найти на канале youtube.
По-моему он хуево рассказывает. Особенно про хуюнити как рассказывал про "ВОТ ЭТО ВИЗАРД - ВОЛШЕБНИК ЗАПУСКА" сука!
https://www.youtube.com/watch?v=PBqTrK3z_KM
Ну смотри, в меню справа ты добавляешь разные компоненты. Например, рендерер или ригидбоди или коллайдер.
А потом если ты хочешь использовать этот компонент (изменить или прочесть данные о нем), то используешь геткомпонент. Пример:
геймобжект1.геткомпонент<ригидбоди>().велосити.х - это возвращает скорость ригидбоди, привязанного к геймобжекту1, по оси Х.
>>247770
А в твоем видеоуроке он обращается к компоненту-скрипту и так из него можно пиздить переменные.
Просто велосити - вектор, по оси - флот
Там в комментариях все жалуются, что пример хуевый он выбрал. Честное слово, я бы и сам запутался в этих йетэназер и йетэназерйетэназер скриптах, если бы первоначально не разобрался.
>>242375
Ну вот та моя игра уже выглядит так, но понимаю, что все еще что-то не дотягивает. Не понимаю, дело в свете или чем. А шейдеры где можно найти, ну примеры, и куда с ними копать?
Если честно я не знаю. Я сам только в 2д умею =)
Именно вот с рассечением моделей.
Ты лучше почитай сперва как это вообще делается в играх.
1. Я так полагаю, что модельки изначально идут порезанные, а при соприкосновении с саблей в таком-то месте, моделька распадается с такой-то анимацией.
2. Или они не порезанные. Взять координаты начального и последнего соприкосновения сабли с предметом, построить вектор и согласно этому вектору проиграть такую-то анимацию.
Нашёл плагин в ассет сторе, но так и не понял как именно он работает.
Понял только то, что там всё совсем по-другому, а именно - модифицируется сама модель, на месте нужного среза достраиваются треугольники, а остальная часть модели удаляется. В итоге остаётся как бы одна из половин модели. Вторая теряется в варпе.
Думаю за месяц-другой реверсинженеринга пойму как это делается и что-нибудь накалякую сам.
Но главный ответ получен - зандацу на юньке МОЖНО.
Он облечённый. Для чего-нибудь типа диаблы пойдёт (что я и делаю, собстно). Намоделить отдельно руки-ноги и потом, при смерти юнита, спаунить на его месте аккуратно всё тело и отдельную отрезанную часть. Так же, если память не изменяет, сделали в л4д2. Наверно и я так делать буду.
Но если игра от первого лица, ещё и про какой-нибудь коридорный близкий бой на мечах, тогда такая система будет не очень красиво выглядеть. Режешь в одном месте - отрезается чуть выше/ниже. И хотя результат вроде тот же - руки нету у врага - всё равно никрасиво. Этот способ я использовать не буду, но хочу детально разобрать на примере того плагина - уж очень интересно выглядит.
https://www.youtube.com/watch?v=xgoUmrhXyYE
Уже уже другой, улучшенный.
Теперь вторая половина не теряется в варпе.
Блядь, странно было бы если бы было НЕЛЬЗЯ. С чем вообще могут быть вызваны такие ограничения, что было бы НЕЛЬЗЯ? На юнити можешь сделать что угодно, зависит только от твоих способностей.
Ну как? Получается?
Как делать мультиплеер?
Из опыта имеется написание связки сервер-клиент (SFML) на чистом шарпе (сокеты), где я не хило так пососал члены, ибо не смог адекватно продумать api, наловился лагов и неуломивых багов. В общем, было тяжко и долго.
Кто-то может по хардкору объяснить, в какую сторону рыть в поисках "готового" решения на Юне? Слышал, что когда-то давным-давно появился в Unity 5 некий UNET, он хорош? Еще слышал о Photon'е, а он как?
Тут самый большой нюанс возникает в том, что сервер я бы выделенный (никаких "комнат" и не каких "host-игроков). В идеале, сервер кроссплатформенный но и сойдет онли-линукс сервер.
Куда копать, анон? Кто по хардкору поделится своим опытом в двух предложениях и скажет, что кал, а что хорошо?
Вы видите копию треда, сохраненную 13 мая 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.