Вы видите копию треда, сохраненную 16 марта 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
шапки для быдла
оффициальность убивает живое общение.
/gd/ для живого общения, а не для накопления и передачи знаний.
есть вопросы - задавай их в треде!
Как сделать заебись одним кликом мышки?
Но у меня вопрос: Чему у меня Debug.Log больше не показывает строчку где произошло событие? Из-за обновления или я дурак?
Соус видоса?
Пусть моча шапки в свой ньюфаг тред пишет, если ей очень этого хочется.
Аноны сидящие в юнити-треде эту шапку все равно не читают.
ух. как же я заебался. уже долгое время переписываю рэйкастинг на навмеше в что-то более адекватное. чтобы вот фанси-шманси, чтобы проверялись только те еджи которые должны проверятся и столько сколько нужно. чтобы потом с его помощью нагородить хуйни в другом месте.
и каждый день я находил как его поломать и как его починить. и ломал и чинил и ломал и чинил. и так пару недель. кажется, больше не ломается.
я собой доволен.
>>490087
в тайлмапы то хуем потыкаешься и можно понять как работают. у юнити много другой отсутствующей интересной документации.
хотя на мой вкус лучше ебануть свой собственный редактор и иметь собственное представление о тайлах, которые ты потом суешь юнити.
надеюсь скоро. перед новым годом у меня пиздец со здоровьем приключился, пришлось какое-то время вместо того чтобы код писать заниматся здоровьем. а потом пришлось начать запиливать фичу для навмеша которую у меня давно просили - локал авойденс. он мне и самому нужен был. сделал рабочий прототип, но потом залип на том как же мне связать его с навмешем. и с тех пор уже больше чем месяц страдаю с этой проблемой, вместо того чтобы делать игры. как доделаю локал авойденс то кстати планирую с одним мудаком запилить вдвоем что-нибудь клевое. у нас с ним давно крутится идея сделать что-нибудь с социальным ИИ. типа симулятора злого властелина где надо командовать миньонами из своей башни через диалоги, а потом смотреть с неё как они делают нихуя и звать стражу чтобы пошли и рабов палками побили.
>>490513
даже не знаю с чего начать. то как навмеш работает я пожалуй рассказывать не буду, но могу.
конкретно рэйкастер работает примерно так: пользуясь немного нахуеверченным алгоритмом Брезенхэма который бы возвращал все квадраты которые пересекает float линия сначала растеризуются все эджи навмеша. когда делается луч то сначала находится нужная конвексная область откуда он пускается, потом чанк за чанком сначала делается отрезок находящийся внутри чанка, потом этот отрезок растеризуется тем-же алгоритмом, потом квадрат за квадратом проверяется каждый эдж на пути растеризации. если у эджа то откуда равно текущей области то проверяется пересекает ли луч этот эдж. если да то текущей областью становится область на другой стороне. и так пока либо эта хуйня достигнет лимитов по дистанции, либо пока эдж вместо области на другой стороне не будет содержать хуй, что значит что луч куда-то воткнулся. думаю картинка скажет о процессе достаточно. красными линиями грид, красными точками через что от грида проходит луч, синим какие эджи относятся к этой ячейке грида, зеленым путь конвексных областей, сине-зеленым то где случился переход в эту область.
до меня по какой-то нелепой причине довольно долго доходило что если все линии описаны по часовой (или против), то если взять скалярное произведение -Y, X вектора этой линии и луча то можно узнать с какой стороны эта линия находится относительно луча и рэйкастить только дальние линии, а не писать хуиту чтобы отличать дальние линии от ближних. числа по краям эджа показывают это.
надеюсь скоро. перед новым годом у меня пиздец со здоровьем приключился, пришлось какое-то время вместо того чтобы код писать заниматся здоровьем. а потом пришлось начать запиливать фичу для навмеша которую у меня давно просили - локал авойденс. он мне и самому нужен был. сделал рабочий прототип, но потом залип на том как же мне связать его с навмешем. и с тех пор уже больше чем месяц страдаю с этой проблемой, вместо того чтобы делать игры. как доделаю локал авойденс то кстати планирую с одним мудаком запилить вдвоем что-нибудь клевое. у нас с ним давно крутится идея сделать что-нибудь с социальным ИИ. типа симулятора злого властелина где надо командовать миньонами из своей башни через диалоги, а потом смотреть с неё как они делают нихуя и звать стражу чтобы пошли и рабов палками побили.
>>490513
даже не знаю с чего начать. то как навмеш работает я пожалуй рассказывать не буду, но могу.
конкретно рэйкастер работает примерно так: пользуясь немного нахуеверченным алгоритмом Брезенхэма который бы возвращал все квадраты которые пересекает float линия сначала растеризуются все эджи навмеша. когда делается луч то сначала находится нужная конвексная область откуда он пускается, потом чанк за чанком сначала делается отрезок находящийся внутри чанка, потом этот отрезок растеризуется тем-же алгоритмом, потом квадрат за квадратом проверяется каждый эдж на пути растеризации. если у эджа то откуда равно текущей области то проверяется пересекает ли луч этот эдж. если да то текущей областью становится область на другой стороне. и так пока либо эта хуйня достигнет лимитов по дистанции, либо пока эдж вместо области на другой стороне не будет содержать хуй, что значит что луч куда-то воткнулся. думаю картинка скажет о процессе достаточно. красными линиями грид, красными точками через что от грида проходит луч, синим какие эджи относятся к этой ячейке грида, зеленым путь конвексных областей, сине-зеленым то где случился переход в эту область.
до меня по какой-то нелепой причине довольно долго доходило что если все линии описаны по часовой (или против), то если взять скалярное произведение -Y, X вектора этой линии и луча то можно узнать с какой стороны эта линия находится относительно луча и рэйкастить только дальние линии, а не писать хуиту чтобы отличать дальние линии от ближних. числа по краям эджа показывают это.
Лично я считаю что хуйня без задач, которая превратит проект в анал-карнавал из ебли с зависимостями, когда изменение в одном префабе тихо изменит половину проекта.
> месяц страдаю с этой проблемой
> то чувство, когда ты ебанул поиск пути на клетках за 1 вечер
С клетками действительно всё гораздо проще делается. Задолбался делать переход из комнаты в комнату через двери для перемещения по навмешу.
Зато получился инстурмент, который ещё пригодится
888x356, 0:07
4 дня пилил процедурный генератор кристаллов, хотя мог бы их отмоделить за час. Болезнь программиста.
https://www.chiark.greenend.org.uk/~sgtatham/polyhedra/
Взял точки на сфере, растолкал их итеративно, через каждую провел плоскость с нормалью "центр сферы - точка", посчитал пересечение плоскостей каждой с каждой, посчитал ближайшие пересечения, построил многоугольники, триангулировал. Выдохнул, налил, выпил. Закусил.
Не проще сделать простые 3д операции (bisect), и потом сделать скрипт который применяет эти операции к мешу
Его ещё не выпилили окончательно?
С какой версии выпилят?
поиск пути на клетках то и я максимум за час ебану! а тут пришлось городить хуйни, возвращатся к старому коду, переписывать, смотреть в потолок. боль.
хотя месяц то я со всей проблемой целиком вожусь. с рэйкастингом может дней 7-10.
суть то в том что надо быстро-быстро найти ближайшую точку к целевой в тени от границ навмеша. чтобы вектор движения был в стороне от препятствий. решений много и все плохие. нагородил много интересных вещей. получил пару интересных инструментов в процессе, починил мелкие баги.
Да.
Ну и ещё такой момент - юнити ебали мне мозг, отключили мои ассеты в ассетсторе, мотивируя тем, что поддержка JS скоро будет прекращена.
Я думал, что это как бы уже коснулось самого юнити, но, похоже что в 2017.3.1f1 JS ещё работает и в property release-ах я ничего не нашёл на эту тему.
Нихуянепонял. Какая тень от навмеша? Зачем тебе навмеш если уже есть клетки?
Начни с постановки задачи блять, нихуя не понятно же.
Я просто не очень умный.
У меня был такой баг. Помог перезапуск.
892x604, 0:07
чтоблять, какие полгода, наркоман?
Не, мне рано вообще игры делать, с движком и C# не разобрался еще.
Допустим, мне нужно сначала нарисовать что-то с помощью канвасрендерера, а потом проверить, находится ли нарисованное за пределами какой-либо области и спрятать это. Маску сделать, то бишь. Стандартная маска вроде как не работает.
Есть очевидное велосипедное решение - проверять, находится ли рисунок за пределами области и отъедать у вертексов и увишек рисунка столько, сколько ушло за пределы области. Должен же быть юнитовский способ попроще, нет?
Ты чё блять юнити, ты чё блять сука?! Это мне нельзя иметь источник, который освещает только 1 слой если у меня больше 1.5 слоев в сцене? Деинсталирую нахуй эту парашу.
Ты ебаный шизик. Тебе уже сто раз сказали, рендери MeshRenderer'ом.
Маска делается stencil'ом в шейдере.
юнити не делает то что я от него хочу.
>>490791
а в чем проблема то? и у юнити и у меня навмеш вполне можно создавать в процессе игры. даже думаю написать немного кода чтобы навмеш быстро-быстро строился с инпутом в виде грида.
вон на 45 секунде показываю.
https://youtu.be/tnDtjIocX1o?t=45
>Ты ебаный шизик.
Я уже перестал это отрицать
>Маска делается stencil'ом в шейдере.
Звучит сложно, но ок. Шейдер же меняет цвета по какой-то схеме, разве мой очевидный велосипед не то же самое делает?
Там на самом деле очень просто. В одном шейдере пишешь что записать в стенсил, а в другом пишешь "если в стенсиле значение такое-то, то не рисовать". Ну и нужно учитывать еще порядок отрисовки (render queue)
это делается там одной строчкой в заголовке. читай доки.
Спасибо, поглядим.
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Nashet.UnityUIUtils
{
[RequireComponent(typeof(Button))]
public class HotKey : MonoBehaviour
{
[SerializeField]
private KeyCode key;
// Use this for initialization
private Button button;
void Start()
{
button = GetComponent<Button>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyUp(key) && button.interactable)
button.onClick.Invoke();
}
}
}
>[RequireComponent(typeof(Button))]
да, добавление этого автоматически обозначает код профессионален
И в догонку - хотелось бы скрипт доработать чтобы он автоматом дописывал в tooltip что есть такой хоткей. Но вот как?
Ясень пень добавляем [RequireComponent(typeof(ToolTipHandler))] и можно в продакшен
Но вот текст тултипов у меня меняется, некоторые вручную при обновлении окна, некоторые - каждый фрейм.
Получается, это надо отлавливать обновление тултипа и в конец дописывать что у него еще и хоткей есть..
>>491041
Ну не траль, я хочу работу найти
>Но вот текст тултипов у меня меняется, некоторые вручную при обновлении окна, некоторые - каждый фрейм.
Отлавливай момент изменения, хуле.
У меня который канвасрендерер ебал с этим делом проще, есть отдельные классы статов, которые обрабатывают указанные значения, и все значения для тултипов/кнопок/диалогов происходят из этих статов, т.е. статы это эдакая прокладка. Я там аж запилил неповторяющиеся рандомные листы при задаче массива значения, чтобы иконки для юнитов не повторялись.
неймспейсы нужны только если ты делаешь библиотеку, которую будут использовать другие пользователи.
писать в своем коде неймспейсы это идиотия уровня объявления приватных переменных.
public double offset;
"строка X": transform.position.x = ( X - Camera.main.transform.position.x )/offset + real_X;
(строка X,35): error CS1612: Cannot modify a value type return value of `UnityEngine.Transform.position'. Consider storing the value in a temporary variable
(строка X,44): error CS0266: Cannot implicitly convert type `double' to `float'. An explicit conversion exists (are you missing a cast?)
Я догадываюсь, что нужно где-то тут добавить new Vector3 но не понимаю шо куда, я только учусь.
Нельзя обращаться к полям структуры напрямую
transform.position.x = ...
Или пили новый вектор transform.position = new Vector3(...)
Или следуй совету Consider storing the value in a temporary variable
Vector3 temp = transform.position;
temp.x = ...;
transform.position = temp;
> нинужна
> размер команды
Определись уже, что тебе конкретно мешает не лепить остоебевшее всем одинаковое платформер-говно.
Трудозатраты на создание 3д такого же качества, как и 2д говнища при отсутствии навыка рисования меньше. Но ты даже не пробовал.
Я хуй знает как ты оцениваешь качество, но всратые спрайты всегда приятнее лоуполи с кривыми текстурами.
> 2к18
> не уметь запечь нормали
> не уметь скачать сабстенс и намазать красивую текстуру за 20 минут
> продолжать лепить всратое пиксельное говно
Ты же необучаемый даун, застрявший в 2003. Впрочем, тут весь раздел такой.
Мое увожение тжриде-господину.
скорее так.
непонятно на чьем горбу такое говнище выбирается в свет.
не устаю поражаться человеческой глупости.
зря ты так говоришь.
я говно чувствую издалека и обхожу его за километр.
поэтому я еще не играл ни в одну т.н. "инди" (по-русски говоря хуевую) игру
>поэтому я еще не играл ни в одну т.н. "инди" (по-русски говоря хуевую) игру
вот этого удваиваю, индипетух не человек.
причем, своё индиговно высирать нормально и даже почетно, но жрать чужое говно уже не оче
Ну конечно. Каждое предложение с новой строки, мелкобуква, отсутствие точки в конце последнего предложения.
Старайся получше.
не могу.
На удивление ничего не сломалось, все вкрипты автоматически заменились на объектах и т.д.
Но что это за странная конструкция "this" ?
Встречается охулион раз, например:
this.StartCoroutine
this.FadeAudio
this.fadeTime
и т.д.
И ещё вот такое не встречал раньше:
public virtual void Update()
> Но что это за странная конструкция "this" ?
https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/keywords/this
this это обращение к самому себе. можно же обращаться к объекту по ссылке, а this это обращение к самому себе.
виртуальные функции могут иметь иную имплементацию в потомках класса.
Нет конечно.
Я бы за такой резкий поворот ей бы по ебалу прописал
Почему в этом итт тренде принято ненавидеть JS ?
Он же прощает ошибки, писать намного проще и интуитивнее, написанное намного компактнее.
Т.е. он очень хорошо подходит для швабодных художников, которые вкатываются в инди-эксперименты без знаний программирования.
На сегодняшний день проанализированы все проекты, которые сделаны на Unity 5.6 (актуальная версия на момент анализа статистики).
- 14,6% (от общего количества) проектов которые имеют по крайней мере один файл с расширением .js.
14,6% звучат весьма внушительно, но затем мы проанализировали статистику более тщательно:
- 85,4% (от общего количества) проектов которые полностью на C# скриптах, без JS.
- 9,5% (от общего количества) проектов которые "сделаны в основном на C#" - т.е. у них есть некоторые файлы JS, но менее 10% от общего количества скриптов.
- 1,5% (от общего количества) проектов содержат от 10% до 20% кода в JS.
- 3,6% (от общего количества) проектов содержат более 20% кода в JS.
- 0,8% (от общего количества) проектов сделаны исключительно (т.е. на 100%) на JS.
Магазин дропнули, фичу паки собирать дропнули
Поэтому я и спрашиваю, как сделать контекстное меню, чтобы у меня были все необходимые навыки для создания игры
InGame, Mechanics, Gameplay, Core или просто Game(хотя все скрипты и есть Гейм)?
TheMind_of_kiri11
Смеялся 25 секунд
Бросай Юнити. Это выглядит стрёмно как бы ты ни старался. Рендерит движок говнисто. Сам посмотри со стороны.
Лол, в менеджед части там нет НИХУЯ. Собственноручно делал декомпил ilspy`ем и перекомпил с изменениями чтобы сделать тестовую среду без графики. Весь движок в нейтив части. Но пиар ход неплохой, дауны схавают.
А что тебе нужно? Просто документации по скриптам редактора, например, нет и не будет. Единственный способ сделать какой-то нестандартный редактор с разными фичами - это дизассемблировать код и смотреть как сделаны дефолтные в юнити редакторы.
С исходниками и комментариями это будет проще.
Как это лучше всего сделать.
Самый простой вариант: сразу загрузить всю карту и просто двигать камеру. Тогда возникает вопрос, как выключать неактивные объекты. Например, нет смысла обновлять все 1000 врагов на всех экранах сразу.
Второй вариант, это удалять и создавать только несколько экранов вокруг игрока. Это гемморойный способ.
>Да, это простое решение. Но оно не гибкое. Например, может понадобиться ситуация, когда объекты могут перемещаться между экранами.
Тогда пиши свое.
Не та книга ошибся.
Вот эта книга страница 172
Торн А. - Искусство создания сценариев в Unity - 2016
Надо в юньку воткнуть гифку, кучу гифок. И критична поддержка в вебгл. Просматривая гугл пришел к выводу, что юнити живет в 3018 и о гифе не слышала. Как блядь это сделать?
чего спиздил? мне дали около 20 готовых гифок от художников, теперь их втыкать надо, а тут вот сюрприз - могу только хуй себе за щеку воткнуть.
а, извиняюсь, попутал.
крч у фш есть экспорт гифок в .png, пользуйся.
и да, юнети не может в гиф, тебе придется смириться.
Юнити недавно выложили C# исходники движка для референса, и кто-то пофиксил старый баг, понижающий производительность, который сами юнити-разрабы не хотели/не знали как пофиксить. Он сделал пул-реквест, но по юридическим причинам они их не принимают. Один из разрабов там потусовался в комментах и пообещал передать специально обученным людям, что этот баг оказывается можно исправить. Ну и в конечном итоге его исправили.
вот это драма
> Юнити недавно выложили C# исходники движка для референса
Вот это новость! Какие прекрасные вещи конкуренция животворящая творит.
Вот ленивые ублюдки лопатой деньги гребут а работать не хотят.
Быстрый вопрос: как называется шейдер из базового набора юнити, который используется для картинок? Для текста есть GUI/Text Shader, а для этой хуйни что? Просто как-то не комильфо, когда всё чёрное, лул.
Есть камера, которая летает за мудилой, позволяет вокруг него крутиться, облетает препятствия чтоб в текстурки не улететь и так далее. Этот скрипт висит на камере.
Само собой, в скрипт камеры передаётся трансформ самого мудилы, чтоб камера могла за ним следить.
И вот стало мне нужно в скрипт перемещения мудилы передать камеру для кое-каких вычислений. Итого получается у меня оба скрипта друг с другом постоянно обмениваются данными.
Правильно ли будет всё это объединить в один скрипт? Один хуй он пересекаются. Или же мухи отдельно, котлеты отдельно?
Как тру-папки делают в такой ситуации?
ты же понимаешь что все это зависит от множества нюансов и мы их не знаем? сделай так, сделай сяк. пять минут код копипастить.
лучше давай рассказывай что там камера думает, может ты хуйню камере даешь.
> лучше давай рассказывай что там камера думает
Летает за персонажем, крутится вокруг него если мышкой вертишь, немного прижимается к нему если между персонажем и камерой какое-то препятствие (чтоб в текстуре не утонуть), как только препятствие исчезло - возвращается на прежнее расстояние.
Это то, что в скрипте камеры.
А нахуя мне её передавать в скрипт персонажа - потому что хочу чтоб в зависимости от поворота камеры персонаж тоже поворачивался. То есть, условно, я зажимаю W, персонаж идёт прямо, и я дальше только мышкой поворачиваю и сам персонаж тоже поворачивает.
И чтоб его повернуть куда надо - нужно знать позицию камеры.
Может антивирус проверяет билд?
У тебя ничего не происходит во время запуска?
Так передавай угол по Y в функцию в мудаке через камеру.
по моему ты не можешь. пробовал наверно пол года назад. знаю что можно совать новые через https://docs.unity3d.com/ScriptReference/Animations.BlendTree.AddChild.html где можно ставить трешхолд как хочется, но вроде там не дают модифицировать ChildMotion как хочется.
ну ты поинвестигируй, я то так, уделил этому минут 40-50 наверно. https://github.com/jameslinden/unity-decompiled/blob/master/UnityEditor/UnityEditor/Animations/BlendTree.cs вон почитай, может найдешь че.
вообще в аниматоре довольно много мест которые вот черная коробка. помню пытался расковырять бленд три, но хуй там был. проще было на коленке сделать что-то что к юнити отношения не имеет.
собственно юнити дает множество инструментов для бленда анимаций, так что всегда можешь свой велосипед сделать.
Да мне вообще и надо было чтоб параметр в блэндтри менял значение через Mathf.Lerp
Оно-то в одну строчку делается, но мне надо в трэшхолды передавать значения из полей класса. Чтоб было откуда и докуда разгоняться.
Но походу придётся просто в трэшхолдах поставить флажки в 0 и 1, а разгонять через лерп значений из полей.
Уже постестил, вполне работает. Не совсем красиво, но что поделать.
> Не совсем красиво, но что поделать.
а в чем именно разница-то? должно на выходе быть то же самое
> а в чем именно разница-то?
Ну смотри.
Вот у меня есть точки в трэшхолде 0 и 1. И чтоб их лерпить - мне надо именно прописывать "0" и "1". То есть магические числа получаются.
А так я бы лерпил от "treshold (0)" до "treshold (1)".
Ну ты понел.
Само собой. Но мне же нужно знать границы, чтоб не залерпить больше верхнего трэшхолда.
Например, в дереве трэшхолды просчитаны автоматом и стоят, к примеру, 0.157 и 5.678
И как мне их получить?
То-то и оно.
Ты что то совсем не туда плывёшь. Ставишь в дереве трешхолды [0,1] и отражаешь значение в этот отрезок.
>отражаешь значение в этот отрезок
думаю, он не разобрался в матане.
по сути, анон, тебе нужно всего лишь НОРМАЛИЗИРОВАТЬ свой параметр. это элементарно. расписывать?
братан, столько постов ради трех строчек.
float spd; //текущая скорость
float spdMax; //макс скорость
float spdMin; //мин скорость
float spdAnim = (spd - spdMin) / (spdMax - spdMin);
anim.setFloat("speed", spdAnim);
Братишка, это всё понятно.
Но мне надо или устанавливать трэшхолды, или же их получать. Я не хочу каждой анимации ручками прописывать её трэшхолды и соответствующие лерпы, понимаешь?
тебе так или иначе пришлось бы указывать соответствующие границы в блендспейсах. но, как выяснилось, прямое изменение границ через код невозможно, а значит придется выкручиваться своими силами. так что я бы на твоем месте просто установил все блендспейсы в 0..1, а потом использовал сточки выше для передачи своего значения.
я так понял у тебя ситуация потипу "есть анимка с стою-бегу, но игрок может купить апгрейды на максимальную скорость бега". ну вот такие задачи решаются примерно моим методом.
а еще я не понял зачем тебе нужен лерп — с ним же еще больше ебаться чем с математической пропорцией.
> я так понял у тебя ситуация потипу "есть анимка с стою-бегу, но игрок может купить апгрейды на максимальную скорость бега"
Примерно так, да.
> а еще я не понял зачем тебе нужен лерп
Чтоб не сразу по нажатию шифта ОХ ЕБАТЬ МАМ СМОТРИ Я БЕГУ БЕЗ РУК, а как бы с разгоном.
>>492744
Можно, конечно, и ручками, я просто интересуюсь можно ли прямо через код трэшхолдами рулить. Но похоже что нельзя.
>братишка
иди семки лузгай кепка
Шапочку из фольги одень еще, довн. Твои данные давно у всех есть, начиная от гугла заканчивая анб через дыры в твоем интеле.
Я именно про "вкатывание" в юнити. Все туториалы, которые по 2д видел, уже подразумевают какой-то багаж знаний, не смог найти те самые "с нуля".
Рекомендую тебе те туториалы, которые надо не смотреть, а читать. Ютуб, конечно хорошо, но не ютубом единым, как говорится...
Если от тебя ускользает смысл туториала, который смотришь/читаешь - переходи к изучению основ.
Попробую Unity in Action полистать, спасибо
Даже любопытно, на чем ты решил забить на 2D. Вроде на одну ось меньше, сиди квадратики вместо кубов двигай, необязательно уметь в 3D мышление в плане дизайна локаций.
Бля, да дело в том, что туторы на 2д, наверное, подразумевают, что я с 3д и вообще юнити уже работал, поэтому многое, для совсем начинающих, не объясняют.
как по мне так похуй с какого конца заходить. лучше вырази конкретно что там у тебя не получилось.
не стоит писать велосипеды для физона. у этого болота дно палкой не найдешь.
но если хочется то попизди ассеты https://assetstore.unity.com/categories/tools/physics почитай их код.
Да мне так, для развлечения. Я ж не собираюсь физон перепиливать. Посодомирую кубами и дропну.
Спасибо, как я сам спиздить не догадался.
Ты недооцениваешь мощь тянок. Они даже команды собирают.
https://www.youtube.com/watch?v=CACmBA0qKFU
> мы хотели всё запихнуть в одну сцену, но в юньке так нельзя, так что пришлось костылить
> мы накостылили и разбили город на три сцены, но надо чтоб объекты из одной сцены обращались к объектам из другой сцены, а в юньке так нельзя, поэтому мы ещё накостылили
> мы всё накостылили, но нам нужен стриминг, а в юнити его нет, так что мы ещё накостылили
> а ещё мы написали свою компонентную систем, свой менеджер и свой сериализатор, и мы не используем апдейт и вообще не используем монобехэвиор
Что они там говорили про выбор движка когда только начинали проект? Что-от про удобство, да.
Чет проиграл с этого, пожалуй, не буду смотреть. Тянки такие тянки.
Коротко: "мыши плакали, кололись, но продолжали жрать кактус".
Часы видел когда-нибудь? Это он сделал.
Причём тут "похвастайся"? Я просто говорю что с движком они явно проебались, не подходит он для таких задач.
То есть они могут забанить твой юнити-аккаунт, если ты назвал кого-то ниггером в дискорде. Да, профессиональный аккаунт за тыщи баксов тоже могут забанить.
Понятно, слился.
Делается без проблем, но игру на уече не сделать. Короче выбираешь между открытым миром и игрой.
4 квадратных километра (а в видео говорится именно о такой площади) в уече развернётся без проблем. Здоровенный, типа скайрима, уже хуй.
Ты видео посмотри, они там нахуевертили такого, что у них проект 8 минут запускается.
Выбрали юньку, после чего переделали её чуть ли не полностью.
Ещё вопрос что было бы быстрее - написать свой движок или пилить напильником юньку.
В твоём манямирке может быть и так, а в реальном мире тем временем в топе продаж и стима, и псстора висит игра с открытым миром на уече.
Пупка нет в пссторе, дебил.
>написать свой движок
Лол, ты же понимаешь что движок пишут годами, вот тот же Xenko open source проект пилят 4 года и никак допилить не могут.
Короче говоря у тебя нет таких квалифицированых трудовых и денежных ресурсов, чтобы запилить что то более менее внятное.
Да в принципе у айспиков есть свой движок, см. первый Мор и Тургор. Но, видимо, взять Юнити оказалось проще, чем довести свое до ума.
> с движком они явно проебались
> проект 8 минут запускается
> поделие уровня мора
> 8 минут
Движок тут нипричем, просто у них программисты - какие-то дауны. Впрочем, это понятно, если у них тянки программируют.
>если у них тянки программируют
Из за левацкой идеологии сами же пострадают, продвигать людей на должность не по професиональному признаку а по тому чтобы было социально равенство, но как мы знаем равенства не бывает, и бизнес будет расплачиватся убытками а спецы будут уходить в другие компании где нету левацкой идеологии.
>другие компании где нету левацкой идеологии
Леваки закидают эти компании исками и всё равно обанкротят.
> Что они там говорили про выбор движка когда только начинали проект? Что-от про удобство, да.
Эх, насколько же ты еще юн, неопытен и глуп. Если они доделали проект - значит, движок был более, чем удобен. А твое описание техпроцесса соответствует разработке чуть менее, чем всех програмных продуктов. В реальности все именно так и происходит. У всех.
Покостылять несколько лет и выпустить игру, выглядящую так, как будто ей лет 10-15 - это может и такое, но лучше, чем не выпустить ничего.
>всё запихнуть в одну сцену
>накостылили
Собственно, похуй на этих тянок. Обесните ньюфагу в геймдевелопинге, как сделать открытый мир, чтобы значит, огромная территория с горами и лесами отобразалась как distantland, низкополигонально?
Я для себя набросал такой алгоритм:
Есть одна сцена с глобальным террейном, она не содержит в себе скриптов, загружается быстро, в оперативке висит как влитой, синглтон. По мере приближения по карте, вокруг игрока загружаются интерактивные области (чанки? локации?) по мере удаления выгружаются. В этих интерактивных областях террейн уточняется, добавляются камни, трава, пропсы, акторы, скрипты добавляющие интерактив. Интерьерные локации (ещё более нагруженные контентом по формуле: 1 интерьерная = 4-6 экстерьерным) не загружаются автоматически. Они загружаются через хитрый механизм подгрузки, спрятанный в анимацию открытия дверей, если точнее, ты подходишь к двери, она закрыта, т начинаешь вскрывать замок, игра забирает контроль над камерой, запускает анимацию открытия или миниигру взлома и включает подгрузку локации. Затем, когда интерьер загружен, проигрывается анимация входа в локацию, при этом, если ты отойдешь на определенное расстояние от двери, она автоматически закрывается и сборщик мусора выгружает экстерьеры за дверью. Если у интерьера есть окна, там на стекла наложен эффект размытия отображающий дистантлэнд.
Правильно ли я считаю?
Уже под кроватью леваки мерещатся.
> Покостылять несколько лет и выпустить игру, выглядящую так, как будто ей лет 10-15
Бля, это мой случай.
Да, ЛОДы.
>Леваки закидают эти компании исками и всё равно обанкротят.
Не у всех странах европы есть такие законы.
Какая из них:
https://ru.wikipedia.org/wiki/Ice-Pick_Lodge
Ты тупой ЧСВшный свинорыл, пока свою игру не запостишь, дабы было чем свой базар обосновать - нахуй иди.
> мы хотели всё запихнуть в одну сцену, но в юньке так нельзя, так что пришлось костылить
> но надо чтоб объекты из одной сцены обращались к объектам из другой сцены, а в юньке так нельзя,
У меня программист решил это так (на Юнити офк) - запихнул несколько сцен в отключаемые перфабы а их - в одну сцену, это 2Д.
Скажите, это совсем пиздецовое решение или нормально? Какие подводные камни?
Мы пока эксперементируем с таким решением, поэтому пока не поздно переделать.
Части цены можно в префабы и подгружать.
Сообщение между объектами можно на ScribtableObject организовать.
> у них программисты - какие-то дауны
Не только програмисты.
Судя по демке, они даже ЛОДы не сделали.
Одна сцена это абсолютно нормально. сделал игру с открытым миром так, вторая сцена на жкран боя
Ну у них проблема была в том, что город слишком большой для одной сцены. Дохуя объектов (мебель там, травон, пыль на рояле, мандавошки), большая площадь, все дела. У вас в 2Д вряд ли такие же объёмы.
>>493123
Слился.
Вот когда ты придешь с пруфами, что ты в бизнесе как минимум вполовину срока IPL, и выпустил хотя бы половину игр - тогда тебя буду слушать.
А пока обоссал тупую свинораху, голосовавшую за путенга.
Впрочем, мы все 8-ом прекрасно понимаем, что ты сдохнешь один в своей коммуналке даже на порог GDC не ступив.
Судя по докладу - таки сделали. Но, возможно, уже после демки.
>Обесните ньюфагу в геймдевелопинге, как сделать открытый мир
Создаешь Terrain, настраиваешь размеры и размещаешь объекты. Все.
Альфина, не нервничай, а то молоко в сиськах прокиснет.
>Все.
В смысле, "всё он будет грузиться 20 минут и вылетит на десктоп"?
Ты вообще внимательно читал пост?
1920x1080, 0:15
Может он быть альтернативой юнити? Исходники открыты и написаны на C#. Можно использовать последнею версию шарпа для написания кода игры. Есть вложенные префабы, которые юнитеки до сих пор не могут запилить.
> все 8-ом
Всем восьмым классом? Понятно, ну, смотреть в рот с восхищением любому ебанату на сцене в этом возрасте - это норма. Вырастешь еще.
Порашный даун, пока ты итт усераешься анонимными вскукореками, ты ни чем не лучше дебила сверху.
>В смысле, "всё он будет грузиться 20 минут и вылетит на десктоп"?
Схуяле? Ты проверял? Там есть внутренние механизмы оптимизации? oculus culling тот же, и использование функций OnBecameInvisible и OnBecameVisible.
Он не развивается. https://trello.com/b/FwbjOjjB/xenko-roadmap последняя карточка 28 июня 2017
Кнопки сделать пиздато в нем, как и в других движках, нет. Все зависит от тебя.
Охуенно!
Любую часть открытого мира можно легко и непринужденно подгружать двумя строчками кода при наведении на её местоположение камерой и так же легко выгружать.
Приходите к нам в годотред. У нас есть печеньки.
Бросьте эту вредную привычку ебаться с префабами в префабах.
А, ну тогда да.
Лол школьник иди уроки учи, тебе тут не место раз не знаешь что такое oculus culling.
Допустим, у тебя есть префабы домиков. Внутри них ты используешь сундучки. Вдруг ты захотел изменить сундучок. Тебе придётся лезть в каждый их домиков и обновлять сундучок. А если бы сундучок был префабом, то тебе нужно было бы обновить всего 1 префаб.
>годот, слишком сырой
Это было актуально год назад. Сейчас там всё охуенно! Ну ладно, многое охуенно, не всё.
Римейк Мора можно написать в годо за пару ночей.
No fuck you!
> Римейк Мора можно написать в годо за пару ночей
А вторую ночь что делать? Я ремейк Мора за полтора часа пишу.
> Вдруг ты захотел изменить сундучок. Тебе придётся лезть в каждый их домиков и обновлять сундучок
Зачем, если можно открыть префаб домика и изменить в нём сундук?
Пиздец, какая удобная технология! [САРКАЗМ]
В движке здорового человека... а ну да. Всё так же. Извиняюсь. Сарказм отменён.
Попался, пиздабол.
Бесплатно тебе что-то показывать? Годотобоги пишут три-четыре игры за то время, что я потрачу чтоб тебе что-то показать. Настолько там всё пиздато.
Ты охуел? У тебя несколько домиков. Будешь в каждом одну и ту же правку вносить?
> У тебя несколько домиков
Типа несколько разных префабов домика, в которых используется одинаковый сундук? Ну да, тогда имеет смысл.
Правда я думал что можно разместить префаб внутри префаба и так. Можно же из Resources просто подтянуть что надо.
960x540, 0:25
Что ты имеешь против прототипирования? Прототипичный куб заменяется на модельку вообще без единой строчки кода.
Можно хранить линк на префаб и потом его инстанцировать. Но это не очень удобно.
Отдельная анимация для пнч и дрели, поэтому дрель (или разные её варианты) тоже в перфабе.
Так вот и получается - перфаб в перфабе.
Правильное и оптимальное программирование ВСЕГДА неудобно.
Ну про пол часа никто и не говорил, если что.
В годоте то? Без единой строчки кода? Они нормальную совместимость со своим же плагином для блендера не могут добиться уже 2 года. То нормали проебутся, то распидорасит все. Про анимации я вообще молчу.
Конечно же ноль, я архитектуру одного и того же проекта мусолю. Чтобы было ОПТИМИЗИРОВАНО.
На самом деле я просто вспомнил про свою любимую ферму-дрочильню и понеслось.
> сколько раз нажали New Project за этот месяц?
Два. Один доделал, второй удалил через пол часа, передумал лепить никому ненужную хуйню. Хотя и первый никому не нужен, потому что клон однокнопочной хуйни, которой уже не один десяток лет, просто интересно было повторить
Что за гамиво в вебмке?
Ну а вообще, по OnTrigger забирай управление у перса и начиная двигать камеру плавно *% от скорости перса.
void OnTriggerEnter(Collider Oldshcool)
{
if (Oldshcool.gameObject.tag == "Oldshcool")
{
Snyat_Shlyapoo(Shlyapa.gameObject);
}
}
она самая
Не, лезвие раскачивается более-менее плавно, а героя пидарасит, как и камеру при переходе.
Скорее охуительный код на персонаже или камере.
Его не пердорасит. Просто тупо разработчик делает паузы зачем-то и все объекты замирают на месте.
>Что за гамиво в вебмке?
Konosuba
>Ну а вообще, по OnTrigger забирай управление у перса и начиная двигать камеру плавно *% от скорости перса.
Ок, понятно. А как сделать чтобы камера "упиралась" в край комнаты, если по умолчанию она следует за игроком?
Так это же азы dead zone в по-экранной 2Д хуйне, анон. Гуглиться на раз-два, тот же полупидар выебистый Brackey делал видосы на тему. Ну или можешь Cinemachine2D использовать, у них там тутор есть.
Не перезванивайте ему, не тратьте деньги. Мегафон вообще охуел с тарифами нынче.
Но ведь не обязательно их всех сразу подгружать же.
Тем более не обязательно дом, мебель и людей в нём обязательно пихать в одну сцену. Надо тебе чтобы какой то объект из непрогруженной сцены общался с прогруженными - прогрузи только его.
Зачем тебе грузить всю площадь, чтобы находящийся на ней торговец чебуреками мог кричать рекламные лозунги в соседнюю локацию?
>какой то объект из непрогруженной сцены общался с прогруженными - прогрузи только его.
Да и даже этого не нужно, модель объекта повесь scriptable object или аналог и при активации объекта просто реализуй интерфейс загрузки текущего состояния.
Чё ты так порвался, лол.
>When a GameObject is rotated, the blue arrow representing the Z axis of the GameObject also changes direction.
Не понимаю, на какую систему координат смотреть нужно. У GameObject и Transorm разные системы координат или как?
А, не, я еблан, почему-то подумал, что вот эта хуйня вокруг объекта и есть система координат
ну так локальная система вращается.
То есть, вот ты резетишь transform объекта и он алайгниться с глобальной системой. И его Z совпадает с Z глобальной, значит движение вперед по Z будет совпадать. Ты его повернешь по Y и Z повернется и движение вперед по Z будет отличаться от Z глобальной.
То есть, в Position хранится положение начала локальной системы отсчёта относительно более глобальной системы, а в Rotation – просто вращение локальной?
А где?
Ну серьезно, я даже не знаю, как это загуглить. Выдает только "как заставить слайдер прыгать между конкретными значениями".
Не, обычными слайдерами я и так пользуясь. А хочется выбирать диапазон значений, а не одно конкретное.
Ну хуй с ним, допишу valueMin и valueMax, потом может найду костыль.
Только самому писать.
Пост полностью не осилил, да?
Вопрос был в том, как в слайдере задать диапазон внутри собственного диапазона.
Где-то тут искать нужно, наверное. https://docs.unity3d.com/ScriptReference/EditorGUI.MinMaxSlider.html
> Юнити тред
> вопрос по работе редактора Юнити
> "Ой, иди нахуй, дебич, мы за тебя игру писать не будем".
Я же тут исходники под Марио не прошу прислать, лол.
https://docs.unity3d.com/ScriptReference/EditorGUILayout.MinMaxSlider.html
а сам чего найти то не смог
Всем привет. не понимаю как решить следующую задачу: необходимо, чтобы нажатие клавиш на клавиатуре было последовательным, т.е., к примеру, я нажимаю клавишу A - затем я должен нажать на D. И так каждый раз при нажатии A или D исполняется код. Но если я собьюсь с последовательности и два раза нажму на D или A - исполняется другой код. Момент нажатия клавиши отслеживается функцией Input.GetKeyDown(KeyCode.D).
Queue<KeyCode> nazhatieKnopki, при каждом нажатии пушишь клавишу в очередь (заодно проверяешь нажатую перед ним клавишу) и запускаешь какую-нибудь корутину которая удаляет клавиши через секунду чтоб твое комбо надо было нащелкивать быстро а не просто так нажимать.
Заводишь список
List<KeyCode> pressedKeys = new List<KeyCode>();
При нажатии делаешь
pressedKeys.Add(keyCode);
CheckSequence();
CheckSequence проверяет весь список pressedKeys целиком каждый раз и сравнивает - не совпало ли с AD, DDA? Совпало? Очищаем pressedKeys, запускаем спелл или что там и тебя. Не совпало и в списке больше 3 кнопок? Очищаем.
Вообще условие очистки и проверки списка зависит от твоей реализации, что будет если я нажму AAD? Сработает ли AD?
Почему, если тебе надо сравнивать целиком список поэлементно или его часть, не меняя его - то List, конечно. Нахрен очередь тут не нужна.
Ага, блять, заебись. Ригидбоди равны оказались. Тогда почему
> parent_rb = GetComponentInParent<Rigidbody> ();
возвращает мне ригидбоди с самого себя?
А теперь почемут под действием гравитации дочерний куб вниз плывёт. Разве он не должен намертво закрепиться за родителем?
все правильно. такая конструкция полезнее.
если надо только с парента пишешь transform.parent.GetComponentInParent
в противном случае код получения и себя и с парента был бы сильно усложнен
Хуйню непонятную написал. Тебе нужно что-то типа комбо реализовать? Вообще, смотри Input.inputString
>>493534
>>493535
всем спасибо. весь вечер мучался со списками, никак не получалось нормально сравнивать элементы. в итоге пришло в голову записывать в строку и искать ненужную мне комбинацию там. работает. доволен как слон. https://pastebin.com/Q7sK84uy
что такого?
А ты попроси! На двоще все твои друзья
По теме: то, что ты хочешь сделать, можно сделать более изящно, практично и понятно
Ну типа как скрипты работают, если я сделаю их у нескольких объектов, как из одного скрипта обратится к переменным другого и тд.
На q w e r t инструменты переключаются. Больше нихуя нет.
> Ну типа как скрипты работают, если я сделаю их у нескольких объектов,
Ну если ты один и тот же скрипт вращения по часовой навесишь на 3 куба, у тебя просто будут вращаться 3 куба.
> как из одного скрипта обратится к переменным другого и тд.
public CustomComponent yoba;
Либо мышкой в поле перетаскиваешь конкретный, либо изъебываешься всякими FindObjectOfType<CustomComponent>(). Либо статичные поля.
я, конечно, понимаю, что это возможно хорошая реализация. но тут же НИХУЯ непонятно. поэтому, оставлю свое решение.
тем более, после я могу выдать игроку, сколько он нажал раз без ошибок.
Создаёшь Texture2D и рисуешь на ней через SetPixel. Я так запиливал отображение waveform треков.
Спасибо братишка
Первый вариант на пике. Второй — используй визуалку. Нажми "Подключить к Unity".
>>493667
Чет не хочет эта кувалда отталкивать моего перса. Просто черпает землю под ногами, персонаж подпрыгивает и приземляется на том же месте. На палке и персонаже стоит rigidbody с отключенной ротацией по всем осям и заморожена позиция по Z, соединены фикседДжойнтом. Если включаю верчение по Z, то перса и палку начинает дико пидарасить во все стороны. Видимо это происходит, из-за того, что управление реализовано через Camera.main.ScreenToWorldPoint (Input.mousePosition). Беда еще в том, что не могу найти ничего похожего на туториал по созданию игры с таким управлением.
>Ну, если ты таргетишь Core i7 восьмиядерные то можно и черeз setpixel, да
Так стоп, выходит сетпиксель больше ресурсов съест чем пачка геймобжектов?
Когда ты вызываешь SetPixel у тебя происходит маршалинг данных передача из управляемого кода в неуправляемый. Маршалинг довольно тяжёлая операция, поэтому если ты хочешь замутить софтварный рендеринг, то лучше использовать SetPixels.
Но еще будет лучше, если ты эти графики будешь рендерить на GPU.
это всмысле симуляцию микросхем и тд.? можно, но еботни будет много(хотя сейчас 10к ии агентов запускают на поиск дороги и нормально) хз
для килообъектов в юнити пилят хуйню какую-то, у них на ютуб канале есть видос с конференции где играют в фентезийный тотал вар.
это та хуйня что позволяет 100к+ симуляцию ригидов запускать? (энтиты вроде или хз)
сорян но факторио делали такие байтоёбы что выжимать это из шарпа не кажется целесообразным. это больше вопрос как глубоко ты хочешь познать глубины безумия, чем вопрос про юнити. а так то хули, вон Cities: Skylines симулирует же пиздилион всего. есть и более казуальные примеры типа fortresscraft evolved который является клоном менкрафта и факторио.
ThirdPersonCharacter управляется кнопками WASD.
Как, не залезая в скрипт, поменять кнопку W на одну из кнопок мышки? Я смотрел в project-settings-input, нашел там про vertical axis, но дальше (пикрил)
Ну блядь есть книги по оптимизации на юнити, бери читай и пили свою факторию хоть на миллион объектов.
> Смичной ты
Чего тут смищного? У тебя же явно прототип, тебе хватит простого перемещения/вращения, проверку на коллайдер и isGround
Хули там писать?
Спосиба, добрый антон!
Я в самом начале создания моего убийцы майнкрафта. Мне некогда размениваться на велосипедизмы.
Можешь считать по школьной физике (ускорение свободного падения, угол падения равен углу отражения), можешь потери на трение добавить.
Мне нужно определить это, принимая во внимание массу объекта, его velocity, силу гравитации, пружинистость объекта
если начальная скорость (x1, y1), а нормаль (перпендикуляр) к поверхности, от которой отражение, (x2, y2), то скорость после отражения можно посчитать по формуле (х1 - kх3, y1 - ky3), где k=2(x1x2 + y1y2)/(x1^2 + y2^2) , вывод расписывать лень.
Можно и по-другому считать, наверное, но эта формула рабочая
Это при 100% упругости, если у тебя не она, домножай на коэффициент
Если начальное положение (x0, y0), начальная скорость (X, Y), а ускорение g направлено по оси y, то формула соответствующей траектории (параболы) будет y = y0 + Yt + gt^2/2, x = x0 + Xt, дальше упрощай сам. (ты вообще еще тут или решил встроенную физику прикручивать?)
Trail рядом с particles
На самом деле я не помню, как там в юнити, но обычно в 2д-движках ось y вниз показывает.
Тогда у начальной скорости минус должен быть. Как бы то ни было, квадратный член работает на компенсацию линейного, если речь о параболической траектории.
Пример:
1. Ссышь в потолок
2. Или метишь в писсуар
Направление вектора ускорения то же, вектор скорости на залупе направлен поразному
Ну так я хз как он стреляет. Может вверх, может вниз. Когда метишь в писсуар, струя тоже по параболе идет, а что "перегиб" параболы не входит в траекторию - ну так мало ли.
В каком смысле вставлять?
Можно ли загружать сразу несколько сцен? - Да.
Миниигры лучше делать отдельными сценами.
Лучше всего на массивах сделать. Делаешь статический массив типа "ссылка_на_игру". Затем в главной сцене / главном меню вызываешь игру по индексу: Игра(1).Запуск;
Обычная физика + тригонометрия.
Система координат у тебя есть, осталось повторить весь курс 9-11 классов
крч
нам нужна переменная vector2 для импульса, vector2 для положения указателя и массив vector2 для точек.
ставим указатель в изначальное положение (в дуло мортиры), импульс ставим такой чтобы совпадал с направлением и силой выстрела.
цикл i=0..1488(введите свое значение длины симуляции), в цикле:
{
записываем в массив точек текущее положение указателя.
рейкаст2д из указателя с длиной вектора импульса.
если рейкаст таки попал во что-то, тут крч нужно взять узнать угол удара к поверхности и отразить от поверхности. юнети подогнали вам vector2.Reflect для такого, подробные объяснения тут stackoverflow.com/questions/41129573/unity-how-to-use-vector2-reflect
переносим указатель в новую позицию по вектору импульса.
умножаем вектор импульса на 0.98(введите свое значение торможения)
}
я уверен ты всё понял
треднечитай
@
сразуотвечай
>принимая во внимание массу объекта
нинужна от слова нинужна, если конечно тебе не всралось прописывать продолжительные отрезки времени трения и это тебе не нужно
>его velocity
даладно.png
>силу гравитации
ну нихуя себе. прибавляем (0, 0.1f) к вектору2 каждый степ
>пружинистость объекта
умножаем на 0.7(вставьте свое значение потери скорости) при столкновении.
Но как я понял, как только персонаж "хост" закроет игру, то и вся игра накроется. Так как хост является что-то типа связывающего звена "клиентов"
Я правильно понял, что если я хочу создать многопользовательскую игру по инету, то в качестве хоста должен быть выделенный сервер/хостинг?
По тому примеру, хостом является сам игрок. Но игроки ведь должны являться только клиентами, верно?
В PUN сделали так, что логика обновляется на стороне клиента. Если хост-клиент выходит, то хостом становится другой клиент. А весь трафик пересылается через их сервера.
https://www.photonengine.com/en/PUN
Могу предложить такой хак:
Когда нужно обновить траекторию, выставляешь таймскейл на дохуя, запускаешь свой снаряд, в корутине пишешь его координаты в массив. При уничтожении снаряда возвращаешь этот массив, интерполировать и рисуешь по ним лайнрендерером. Нахуй надо свою физику и юнитевскую комбинировать.
Ах да, и таймскейл обратно вернуть не забудь. Ну и запускаемый для этого объект невидимым сделать.
ахуительная едея, при наводке замораживать игру. в том числе и всякие эффекты там, партиклы, облачка, анимации.
да он дурак, чего там замораживать, если тракеторию нужно во время логики нового фрейма просчитать?
Короче есть такой код https://pastebin.com/BkpDZ1Q1 , он возвращает массив векторов по которым должен лететь снаряд, каким способом лучше прорисовать линию по этим векторам? Должно получиться что-то типа этого
Распиши как это должно работать, я еще не разобрался в лайн рендере, там должно все пару строк кода укладываться
Это скрин тутора , хочешь узнать-скачай angry birds.
Скачай бету если тебе так нужно
ты такой суешь в рендерер линий свои точки, а он такой такой хопа и рисует тебе линию. чудеса да и только!
line.SetPositions(Plot(rigit,startPos, rigit.velocity, steps));
Argument 1: cannot convert from 'UnityEngine.Vector2[]' to 'UnityEngine.Vector3[]'
чё сказать то хотел? не понимаешь что-ли что Vector2[] и Vector3[] это разная хуйня? сделай чтобы твое говно возвращало массив из Vector3, а не Vector2.
тебе помогают. сделай в своем сраном Plot чтобы он возвращал Vector3[] а не Vector2[]. Один хуй векторы кастуются один в другой без вопросов. или ты бы предпочел в качестве помощи получить сначала пиздюлей, а потом чтобы тебе в ебало сунули сделанное за тебя?
Просто я сегодня злой, но ты все равно пидарас
Vector2[] arr = ... //получить массив
Vector3[] newArr = new Vector3[arr.length];
for(int i = 0; i < arr.length; i++){
newArr = new Vector3(arr.x, arr.y, 0);
}
line.SetPositions(newArr);
Никак, их все убили
а) каждый раз новый массив создавать это по уебански
б) можно не писать new Vector3(arr.x, arr.y, 0) так как у него есть implicit оператор для приведения его к Vector2
в) можно не ебатся с массивами и сувать в линию точки сразу через line.SetPosition
m_disintegrateAndDepositMat.SetFloat("_MaxRegolith", maxRegolith);
Спасибо за код, позволяющий передать параметр материалу, никогда бы в доках не нашёл.
Только это изменит значение параметра для всех рендереров, использующих этот материал, не так ли?
>для всех рендереров
Хз. Может нет. Я в ручную вызываю обработку конкретной текстуры
materials.m_disintegrateAndDepositMat.SetFloat("_MaxRegolith", maxRegolith);
RenderTexture[] terrainAndRegolith = new RenderTexture[2] { terrainField.WRITE, regolithField.WRITE };
RTUtility.MultiTargetBlit(terrainAndRegolith, materials.m_disintegrateAndDepositMat);
terrainField.Swap();
regolithField.Swap();
>каждый раз новый массив создавать это по уебански
Но нахуя? обнуляем счетчик максимального количества и переписываем имеющиеся данные новыми. Вообще - переиспользование объектов - дает охуенный буст к производительности. Это еще во времена Java ME поволяло делать графин и относительно быстрый геймплей, при том что там жаба-машина была зачаточная и без оптимизаций.
Можно так же использовать прокси объекты, у которых одни сплошные методы и гетеры сеттеры, а из полей - один единственный сраный индекс массива, и все обращения к прокси объекту передаются объекту-коллекции, который уже сделан строго по DODу с полями каждое отдельной коллекцией.
Да. Тебе надо юзать material, а не sharedMaterial, и не забыть уничтожить материал при уничтожении объекта.
Спасибо.
Братишка, кудахтер взорвался нахуй от SetPixels, как там на гпу рендерить, через openGL? Выглядит сложновато.
В шейдере может быть?
https://pastebin.com/FQdYrEZD
>>494275
чего сказать то хотел? я такой написал: создавать новые обжекты плохо. и ты такой "создавать новые обжекты плохо!". вообще ебаторий с этим, индексами и прочим говном конечно весело, но производительность то в геймдеве не так и нужна.
>>494320
если не на мобилки делаешь то почитай про https://docs.unity3d.com/Manual/ComputeShaders.html туда будет проще всего наверно вкатится для твоих целей. ты говоришь гпу че делать, а оно делает. можно сунуть какую-то текстуру и производить манипуляции с ней.
>>494329
чисто так интересно. а что должно было по твоей задумке делать это?
foreach (GameObject g in balls){
float distance = (currentBall.transform.position - g.transform.position).sqrMagnitude;
if(distance<10f) currentBall.transform.Translate(pos);
}
>чисто так интересно. а что должно было по твоей задумке делать это?
Проверять дистанцию до каждого обьекта на сцене, и в случае, если дистанция мала, то выполнять попытку случайно перемешения currentBall на другую позицию
что за хуйню вообще это пытается делать? собственно что должно ограничивать выход шариков за пределы то?
//получаешь случайную точку в выбранных пределах
Vector3 pos = center + new Vector3(Random.Range(-size.x/2,size.x/2),Random.Range(-size.y/2, size.y/2));
//находишь все шарики с нужным тегом
List<GameObject> balls = new List<GameObject>();
balls.AddRange(GameObject.FindGameObjectsWithTag("RedBall"));
balls.AddRange(GameObject.FindGameObjectsWithTag("BlueBall"));
balls.AddRange(GameObject.FindGameObjectsWithTag("GreenBall"));
//создаешь новый шарик в рандомной позиции (хуй зает зачем)
currentBall = (GameObject)Instantiate(getTheBall(), pos, Quaternion.identity);
//проходимся по всем шарикам
foreach (GameObject g in balls){
//находим дистанцию до созданного шарика возведенную во вторую степень (нахуй квадратная магнитуда то?)
float distance = (currentBall.transform.position - g.transform.position).sqrMagnitude;
//если расстояние меньше чем 3.162278 юнита то мы перемещаем шарики в направлении мировых координат созданного шарика? что за хуйня?
if(distance<10f) currentBall.transform.Translate(pos);
}
Ух сука как ты меня выбесил.
Первое - этот скрипт не работает, тебе это что-то говорит блять? Это не пособие к действию, а призыв о помощи, а ты сука задаешь вопросы будто я выставил это как решение("ЧО ЗА ХУЙНЯ"), долбаеб. Это первое.
Во вторых, про квадратную магнитуду я тебе скажу так, цитата из справочника юнити " Calculating the squared magnitude instead of using the magnitude property is much faster - the calculation is basically the same only without the slow Sqrt call. If you are using magnitudes simply to compare distances, then you can just as well compare squared magnitudes against the squares of distances since the comparison will give the same result." Врятли такой долбаеб как ты это переведет, так что воспользуйся этим https://translate.google.com, в третьих, я не перемещаю щарики(Во множ числе), я перемещаю ШАРИК, так как этот скрипт висит на пустом обьекте, которых на сцене ровно такое же кол-во, как и шариков, в четвертых иди нахуй
>Первое - этот скрипт не работает, тебе это что-то говорит блять?
о том что ты долбоеб мне это может говорить только. он работает - он делает то что написано. другое дело что это расходится с тем что ты хочешь от него получить. поэтому я объясняю тебе, мудаку, что он делает чтобы ты написал его так как это надо тебе
>Во вторых, про квадратную магнитуду я тебе скажу так, цитата из справочника юнити
лол он говорит что квадратная магнитуда это блять квадратная магнитуда. ты понимаешь что это длина вектора без извлеченного квадратного корня? что формула длины вектора это квадратный корень из сумм значений вектора во второй степени? можно не извлекать квадратный корень. но тогда длину вектора с которой сравниваешь тоже надо возвести во вторую степень. если ты хочешь сравнить длину с десятью то надо сравнивать с 10 умножить на 10. ну ещё лол конечно можно сравнивать квадратную магнитуду с 1. потому что очевидно что 1 во второй степени это все равно 1.
>я перемещаю ШАРИК
а лол ну да я не обратил внимание что там написано currentBall.transform.Translate(pos); тоесть лол ты че, перемещаешь шарик в направлении столько сколько у тебя шариков в сцене? что ты творишь лол
>я объясняю тебе
>нахуй квадратная магнитуда то?
>что за хуйня?
>что ты творишь лол
Ты больной, отьебись, и еще раз перечитай статью в справочнике
>перемещаешь шарик в направлении столько сколько у тебя шариков в сцене?
Че написал то хоть понял?
слушай, я написал сраный навмеш. предположу что аналитическую геометрию и в частности векторы-хуекторы я знаю лучше тебя. а у тебя какие-то нелепые проблемы с объяснением комптютору что же ты от него хочешь. хули. я тебе объяснил почему происходит то что происходит. а ты почему-то взорвался.
>>494344
лол ну а хули ты смотри что тут написано?
foreach (GameObject g in balls){
if((currentBall.transform.position - g.transform.position).sqrMagnitude<10f) currentBall.transform.Translate(pos);
}
проверить расстояние шарика с коллекцией шариков, если этот шарик достаточно близко к текущему шарику то надо сдвинуть шарик в направлении его изначальной мировой позиции. ололо!
Чел который лепит велосипеды выебывается на двачике, спешите видеть
>в направлении его изначальной мировой позиции. ололо
> Не знает что такое Random.Range
У тебя какие-то воспаленные представления о том, как выглядят обьяснения, тебе бы вообще лучше сначало словарь выучить, а не векторы-хуекторы
>Чел который лепит велосипеды выебывается на двачике, спешите видеть
ну а хули, клевый велосипед. ты посмотри, можно сидение задом наперед одеть, руль от камаза прикрутить, педали снять.
вполне нормально достать свой хуй и постучать им после того как кто-то обвинил тебя в некомпетентности.
>Не знает что такое Random.Range
а что рандом рейндж? ты почитай где он применяется.
Vector3 pos = center + new Vector3(Random.Range(-size.x/2,size.x/2),Random.Range(-size.y/2, size.y/2));
в самом начале. хуяк и позиция плюс рандомный вектор в таких-то пределах. ну хули. а дальше мы такие хуяк и заспавнили шарик на этой позиции.
currentBall = (GameObject)Instantiate(getTheBall(), pos, Quaternion.identity);
а потом хуяк и такие в лупе перемещаем шарик в направлении этого вектора
currentBall.transform.Translate(pos);
или ты что, думаешь что каждый раз при обращении к этому вектору он становится рандомным?
>>494349
какие твои претензии? что картинки не рисую, схемы там?
Чем больше спорите, тем дальше он уходит от темы и начинает нести про совсем левую хуйню.
Самое смешное что такой навмеш пишется за пару часов с нуля.
Алгоритмы, особенно уже написанные, это в принципе самая простейшая область программирования.
Это выводит строку в консоли. Раньше, при клике на эту строку открывалась ms vs 2017 на соответствующей строке кода. Теперь - ноль реакции. Как исправить? Unity 017.4.0f1
> Раньше, при клике на эту строку открывалась ms vs 2017 на соответствующей строке кода. Теперь - ноль реакции. Как исправить?
Вот эту хуйню поковыряй. Вроде оно.
> аллоцирует массив
> FindGameObjectsWithTag
> foreach
> выиграл 0,0001нс на оптимизации КВАДРАТНОГО КОРНЯ
Не устаю проигрывать с оптимизаторов
А мог бы выигрывать и игры делать
Не, тут норм у меня.
Но ссылки не работают. Обновил студию попробовал старую Юньку - не работает
ха-ха. нет. вообще если тебе интересно то в этом проекте сейчас 25к строк кода. за пару часов хуй ты чего напишешь.
>>494387
юнити никогда это не пофиксит наверно. там много что может пойти не так. попробуй убрать все пробелы из пути до проекта и реимпортнуть его. ещё в правом верхнем углу консоли можно ткнуть на три линии со стрелочкой, проверь включен ли там стак трейс и прочее говно. у тебя же не макось надеюсь.
>юнити никогда это не пофиксит наверно. там много что может пойти не так.
У них там что спагетти код вместо нормальной ООП архитектуры?
В шепот
А могли бы просто SendMesage студии делать.
> ха-ха. нет. вообще если тебе интересно то в этом проекте сейчас 25к строк кода.
Больной ублюдок.
Autodesk Sdelat Kracubo 2017
Переименовывал это - ничего, давал другим его имя - работает.
Создал новый шейдер, полностью скопировав код старого - работает.
Забыл написать апдейт.
Проблема была в разных символах конца строки.
Полезно читать ворнинги.
Пацаны! Вытек из вольвовского Source. Занимался именно десингом уровней именно в хаммер эдиторе. Моделькать тоже умею. Как собрать просто мир без всяких нпц и прочей кодерской хуиты? Как всё работает? Есть гуиды? Что курить? Всякая хуета вроде видеотуторов от Васянов рвёт мне жёпу. Есть годные текстовые туторы именно по работе с визуальной составляющей?
Если кто уже копался - есть хорошие ссылочки по сравнениям с ранее существующими левыми решениями?
хуита это ECS. не трать время.
архитектура там уебищная и нечитаемая как и все что юнити высирают в последнее время.
>опять это UE-уебок срет в Unity-треде
почему юнити перекладывает проблему производительности на пользователей? у них есть полный контроль над виртуальной машиной, они могут делать что угодно, писать свои конпеляторы и т.д.
нет, вывалим уебищные велосипеды, ебитесь как хотите.
Хочу, чтобы в игру был встроен был простенький 3д-редактор - двигать/вертеть/группировать модели/слои, копировать-вставить-отменить, снэп ту *, итд.
Как эту хуйню гуглить, чтобы выдавало не сам редактор юнити/другой среды? Или может такого вообще хуй найдешь?
Но.. Но я функциональщик.
Такого, вроде, нет. Поищи в ассет сторе.
>юнити никогда это не пофиксит наверно.
Проблема была в том что я в билдинг сеттингс отключил логи
Речь идет про Fungus - популярный ассет для визуальных новелл и диалоговой системы вообще. Ну очень уж туго у меня идет общение этих блядских схемок с самописными моими скриптами. Небось создатели Фунгуса в первую очередь запали на идею создания игр без программирования и потому так мало годных инструментов для работы со скриптами.
Единственное что нашел это Call Method, Invoke Method, Invoke Event.
А мне нужно-то всего получить значение публичной переменной из соседнего gameObject.
Ну не буду же я, как полудурок, писать методы возвращающие те или иные переменные. Должен быть способ проще. Как?
Можешь не советовать писать диалоговую систему самому. В остальном меня Фунгус устаивает.
Сейчас понял, что надо написать просто отдельный метод который будет через рефлексию находить переменную и возвращать.
Просто у меня школьные знания шарпа, а в школе рефлексию не проходят. Завтра буду пробовать, заебся уже.
Очень редко, несколько раз за игровую сессию справиться у игрока о состоянии его здоровья или другой херне и по результату вывести нужный диалог схемками в Фунгусе.
смотри у меня
>Ну не буду же я, как полудурок, писать методы возвращающие те или иные переменные
>Рефлексия
И продолжает срать. Мидило, ты вообще с головой не дружишь? Хотя бы в канун такого светлого праздника мог свою имбецильность подержать за зубами.
public float ReturnSomeFloatVariable (string var_name)
{
float result = (float)typeof(v_AIController).GetField(var_name).GetValue(this);
return result;
}
В общем, сам и ответил на >>494614
Правда, все равно не так, как мне хотелось. А хотелось бы возвращать разные типы переменных из одного метода float, bool, string
https://assetstore.unity.com/packages/tools/camera/pro-camera-2d-the-definitive-2d-2-5d-unity-camera-plugin-42095
В тырнетах есть старая версия, но она не совместима с новой юнити.
Также вот нашел последнюю версию на одном форуме, но так нужно надрочить на 50 лайков для получения ссылки:
https://www.board4all.biz/threads/unity-pro-camera-2d-2-6-0.703621/
http://www.procamera2d.com/demo-platformer/
судя по демо нет ничего такого, что бы Cinemachine не умела
Ну, про Zoom to Fit даже червь Brackey говновидео делал. Аналог Rooms есть, но конкретно такой-же надо будет доделывать, да.
Pixel Perfect выглядит неплохо.
Ты эта, найдешь билд совместимый с 2017-2018 отпишись
>Ты эта, найдешь билд совместимый с 2017-2018 отпишись
Всё там в старой версии ассета работает кроме депрекатед гуя.
я реализовал очевидное соприкосновение с коллайдерами, но он работает также если я нахожусь сбоку коллайдера.
https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBox.html
Главное подобрать нужный size, ну и на каждый объект земли под ногами нужно вешать нужный layer
мимо другой нюфаня
спасибо, но я примерно так и реализовывал, только OverlavCilrleAll и столкнулся с проблемой, если прыгаю рядом с платформой, то он воспринимает будто я на ней. т.к. совмещение коллайдеров все равно происходит. да и с низу можно прыгнуть и буквально повиснуть с низу платформы.
Потому что в уече ты нажал две кнопки и вот уже часы готовы, а в юнити нужно как минимум ассетов напиздить?
Потому что школьники, вроде тебя, ведутся онли на чёрненький yoba интерфейс с цветными графами. Им кажется, что окно с кодом - это жи так скучно и офисно.
Ну то есть зажимаешь какую-то кнопку или где-то выбираешь и двигаешь ровно. Что бы стык в стык спрайты прилегали.
Не понял.
Контрл нажми
SceneManager.LoadScene(); загружает сцену, но это работает только при первом запуске, затем если повторить эту процедуру после того, как немного поиграешь, он загрузит сцену с твоим прогрессом в прошлый раз
т.е. я тупо хочу что бы персонаж ходил по клеточкам тайлмепа. везде блжад полуторочасовые школотуториалы вида "как-запустить юнити, скачать 2д-экстрас и добавить грид на сцену"
Совсем ебобо?
x = (int) (position.x / size.x)
y = (int) (position.y / size.y)
Где size размер одной клетки
grid.WorldToCell()
grid.CellToWorld()
она же может быть отдельно как угодно скалирована/кручена.
Изучи исходники его ИИ и сделай сам
Чтобы реализовать ИИ хедкраба - ты сам должен стать как хедкраб. Думать как хедкраб, действовать как хедкраб. Сначала потренируйся дома, а потом выйди на улицу, примерься к симпатичной тянке, резко прыгни и засоси ей голову.
Да.
>c#7.0
В кокой версии?
Алсо, только что узнал что юнити конвертирует float в decimal через string.parse
знатно проиграл
>Алсо, только что узнал что юнити конвертирует float в decimal через string.parse
???
где пруф?
Хуинк тебе. Еще скажи я пикчу подделал
Но у меня в 2018.1 бете нет этого компилятора в package manager. All нажал. Где взять?
пропиши в Packages\manifest.json
{
"dependencies": {
"com.unity.incrementalcompiler": "0.0.33"
},
"registry": "https://staging-packages.unity.com"
}
после смены компилера выйди из юнити и убей папку
Library\ScriptAssemblies\ что бы оно пересабрало под новый
Спасибо. И сахарок заработал, и float-decimal теперь без парсинга строк конвертируется.
Думаешь стоит на этой версии релиз выпускать? У меня стратежка по мотивам Виктория 2
https://searchcode.com/codesearch/view/21598116/
182 строка
Decimal d = Decimal.Parse (value.ToString (CultureInfo.InvariantCulture), NumberStyles.Float, CultureInfo.InvariantCulture);
это в моно такой код. по крайней мере был.
алсо, какой даун использует decimal в игре.
> какой даун использует decimal в игре.
Я
Но у меня игра про кокономику. Впрочм, можно попробывать на float или дабл перейти
>Думаешь стоит на этой версии релиз выпускать? У меня стратежка по мотивам Виктория 2
хз, бета же. могут все внезапно сломать
>Decimal.Parse (value.ToString (CultureInfo.InvariantCulture), NumberStyles.Float, CultureInfo.InvariantCulture);
Какое омерзительное словоблудие. Прям физически передергивает, глядя на это. Как вы в этой хуйне кодите?
> какой даун использует decimal в игре
Двачую этого. Decimal - это хуйня для банков, чтобы сходились до копейки суммы в триллионы. У обычного дабла точность чето 16 ебаных знаков, блять. В какой нахуй игре игрок способен запомнить баланс в овер 16 знаков и ему не похуй на последний?
Когда оче хочется обеспечивать детерминированность в расчетах (а хотеться этого может, например, чтобы в мультиплеере не синхронизировать все состояние мира, а передавать только действия игроков, а последствия пусть считаются независимо), decimal - самый простой (далеко не самый оптимизированный, но, может, этого и не надо) способ.
причем не современное моно, а древнейшее, времен дотнета 2.0, когда его красноглазики только начинали писать.
Притом что оно стоит подефолту в настройках юнити?
ну тык когда ты его толкаешь т.е. ии не должен контролировать его - отключай. как упадет - включай назад
Спасибо. Так и сделаю.
Алсо, на iOS пропадают партиклы в гуе, даже непонятно куда копать. Ебанутый движок. Остается только сидеть на работе в пятницу до упора и в очередной раз заливать билды в ассетстор. Спасибо Юнити за миллион лишних часов работы! Пидары.
Дабл тебе ровно ту же самую детерминируемость обеспечит. Это стандарт языка (вернее, даже не самого языка, а используемого всеми компьютерами стандарта по вычислению чисел с плавающей точкой).
Согласен. Включил его сегодня по утру, аж птички за окном запели.
Хули ты непонел? Если повесишь риджид боди, то будет падать, если не помечен как kinematic
Он бы больше насасал, чем за игру получил
А вы уже используете всю мощь timeline в своем игоре?
Суть как раз в том, что timeline можно использовать не только для катсцен, но и для геймплея.
Ой просто иди нахуй, оопущенец, ты доебал меня уже. Иди анус себе затаймлайнь игру хотя бы одну сделай.
ты чего бомбишь? по сути таймлайн это редактор корутин. можно делать корутины из простых компонентов.
после появления timeline действительно не нужны.
FindGameObjectWithTag("InterfeisIgroka").SendMessage("ShowTooltip", gameObject);
>Вызов функции для инжекта
1. Зависимость
2. Копипаст кода, если есть несколько мест в которых создается объект.
Отличное решение!
Мне лень, честно, еще раз объяснять этому уроду, почему его сендмесседжи говно. Извините.
Ну так оопущенец вообще считает, что инициализировать ничего не надо - месседж ShowTooltip послал и всё.
Все нормальные люди пользуются одним из вариантов
1) .Init(...)
2) Связывание в редакторе
3) DI фреймворк
А как же фабрики и прочие пораждающие патерны.
Кстати, кто-нибудь знает, как называется патерн, когда есть какой-то набор методов, которые возвращают объект или интерфейс, который реализует тот же набор методом. И можно из этого цепочки строить. Видел такое в LeatTween. Вот например:
LeanTween.moveX( gameObject, 1f, 1f).setEase( LeanTweenType.easeInQuad ).setDelay(1f);
Типа двигать объект по иксу, выставить тип интерполяции, выставить задержку.
А какие хорошие альтернативы есть?
Все реализовано, через if (Input.GetButton("Horizontal")) _activeRun = true.
>Все реализовано, через if (Input.GetButton("Horizontal")) _activeRun = true
Ну ты сразу все технологические решения раскрыл, так и украдут твой платформер и сделают миллионы, оставив тебя ни с чем.
А если серьёзно, то сложно телепатически узнать, что там происходит с этим флагом при смене сцены и какова логика бега.
В каком скрипте обрабатывается инпут? Уж не в том ли, которой прикреплён к выгружаемой сцене? Если я правильно понял описываемое, инпут обрабатывается в двух разных скриптах двух разных сцен, которые загружаются и выгружаются по очереди. Естественно, бег будет прерываться.
Тут надо либо держать инпут в отдельном скрипте-синглтоне, либо при смене сцены, выгружаемая сцена пишет в публичную переменную инициализируемой сцены своё состояние (например stage2.RunState = activeRun). Новая сцена запускается с уже бегущим персонажем, далее она обрабатывает сначала событие отжатия клавиши бега с остановкой персонажа.
Я про батчи и drawcalls. Лоды и так есть.
Интересует ручное редактирование мешей (планирую писать воксельное чудо с физикой и транспортом), прикручивание физики (Bullet? например), написание шейдеров.
И можно ли юзать стандартные юнитивские коллайдеры для написания адекватной физики?
У Unity есть PhysX зачем Bullet? Есть желание - доки Nvidia в зубы и шлифуй как надо.
По поводу меш-гена - catlikecoding (гугли) или скачай какйо-нить воксель-движок ассет, разбери и пойми что к чему
хуева
Я обрабатываю это в событии OnTriggerEnter2D скрипта противника. В случае с пулей противник просто дергается, в случае с ракетой - его разносит на куски. Соответственно, я должен вызывать 2 разных метода при попадании.
И что-то я не могу придумать, как красивше передать скрипту противника, что в него именно попало, поскольку у пули и ракеты разные контроллеры, хоть и наследуются от одного.
Пока я повесил на все типы снарядов еще один скрипт - DamageController, который в паблик-переменной хранит тип урона, и скрипт противника может обращаться к нему через GetComponent. Но это решение мне кажется кривым. Может подскажете чего?
У меня проверка на попадание проводится в скрипте на снаряде, откуда делается sendmessage берётся IDamageHandler компонент объекта и в него передаётся информация о уроне.
Ты предлагаешь мне вместо:
damageFunction =
other.gameObject.GetComponent<DamageController>().damageFunction;
Invoke(damageFunction, 0f);
Написать что-то вроде:
if (other.gameObject.CompareTag ("Raketa")) {
Raspidorasit();
}
if (other.gameObject.CompareTag ("Pulya")) {
Prodyryavit();
}
if (other.gameObject.CompareTag ("Hui")) {
Zashkvarit();
}
etc.
>>496640
Это считай тоже самое, что у меня, только с другого бока. Но ты меня немного успокоил. Возможно мое решение не такое уж хуевое.
>Ты предлагаешь мне вместо:
Если ты не в курсе, GetComponent в разы медленнее проверки тега или имени объекта. Во многие разы. Ок, у тебя медленный платформер, ты там стрелаяешь раз в минуту.
теперь представь bullet hell c 1000+ снарядов на экране каждый кадр. Твои разы превратились в десятки тысяч раз кек
Да я-то как бы понимаю, что медленнее. Поэтому и задался таким вопросом. Ты правда не учитываешь того, что обращение к компоненту происходит только в случае попадания, поэтому десятков тысяч там не будет. Я бы и рад использовать тэг, но мне показалось логичным на все снаряды повесить один тэг и использовать несколько в другом контексте. Вот если бы можно несколько тэгов на один геймобжект повесить, то проблема бы просто решилась.
> GetComponent в разы медленнее проверки тега или имени объекта
И тут ты такой с пруфом. которого нет, потому что это наглый пиздеж уровня оопущенского дегенерата. как же вы заебали, ебаные пидарасы..
> GetComponent в разы медленнее
https://snowhydra.wordpress.com/2015/06/01/unity-performance-testing-getcomponent-fields-tags/
Только что хотел линкануть но вот этот уже сделал:
>>496645
результаты ужасные. Никто в здрааом уме не использует GetComp. Ты когда дельные видева от людей --- которые РЕАЛЬНО зарелизили игру и продали около 500к копий (типа INSIDE) --- смотрел? Где твоя популярная игра в стиме, дабы я знал, что не голословишь?
Я вот банально повторяю то, что люди с опытом и авторитетом сказали, никто пока их не опроверг. Ну окромя диванного мамкиного кодеры в богом забытом двач-треде, у которого и игры-то нет лоол
Спасибо за ссылку. Я почему-то тоже был уверен, что обращение к компонентам слишком затратно, а все оказывается не так уж плохо.
> уебку линкуют график из профайлера, но он не способен прочитать английский текст и сравнить две чиселки
> ой надо ченить линкануть тоже
> линкует общий канал GDC на ютабчике)).)
>>496648
не за что. Всегда гугли сам, лучше офф. форум юнити, стековерфлоу, а еще лучше сам забенчмаркь в своем коде. Чем слушать каких-то уебков, которые понятия не имеют как работает дотнет/моно, и распостраняют дезу, пусть даже они сделали хоть 15 успешных игр в стиме хинт - успех игры зависит от погромистов чуть-чуть более, чем никак.
>Это считай тоже самое
Не то же. Снаряд сам по себе уже знает какого он типа, а цели не надо знать, что в неё вообще может попасть.
давно уже все выясняли в тредах.
getcomponent это тупо цикл по массиву объектов с оператором as. если у тебя не сотни компонентов на объекте, то это не сильно влияет на производительность.
мусор из-за отсутсвия компонента есть только при запуске в редакторе. юнити там возвращает специальный объект, который кидает ошибку в консоль что компонент не найден
>еперь представь bullet hell c 1000+ снарядов на экране каждый кадр
Иииии... время на все геткомпонент вызовы не приблизится и к миллисекунде.
Используй SendMessage.
на пуле и ракете отправляй разные сообщения.
Наследование не используй. Вместо это сделай отдельный компонент общий для них.
Еще один довн, который не умеет читать текст. Школьники вы там вообще уже со своим ютабом ебнулись, ало?
Квадрипл хуйни не скажет.
Ну ты и поехавший. Медленнее у него, пиздец просто. Ну медленнее оно, но так уж это важно? Вообще плевать. Главное, чтобы работало и, по возможности, писалось быстро. Именно поэтому у всяких инсайдов требования сопоставимы со скайримовскими - можно делать игры и продавать их сотнями тысяч копий, а можно вместо этого рассуждать, что быстрее работает и что лучше использовать.
>Наследование не используй. Вместо это сделай отдельный компонент общий для них.
С этого момента подробнее. Почему наследование хуже, чем несколько компонентов с разделенной логикой? Я конечно диван, но наследование выглядит разумнее и повторов в коде позволяет избежать. Я наоборот все стараюсь в таком ключе переписать.
>Ну медленнее оно, но так уж это важно?
Ну когда у тебя микрофризы каждые n секунд - сам подумай, важно или нет?
Вот, Hollow Knight использует getComponent для проверки, есть ли на объекте скрипт Bounce, который отвечает за то, будет ли рыцарь pogo'ить от объекта. Ну а теперь зайди на офф-формы и поищи
"freeze on hit", "stutter on hit", "freeze on attack" etc
Весело
игра не может тормозить от одного getcomponent
Блядь, я про это и говорю: они не рассуждали, они делали игру - и теперь на форумах их игр обсуждают микрофризы. А что обсуждают на офф-форумах твоих игр? Ах, да, ты же деланью игр предпочитаешь жевание соплей!
Так я и твоей игры не вижу. Все еще жду когда ты ее запостишь, просил 100 постов назад.
Но постить-то нечего, окромя "оптимизация злоооуу"
> stutter on hit
> 1 getcomponent
> не подгрузка анимации, не обращение к винту, нет, виновата одна O(N) операция
Пиздец.
Какой анимации придурок, анимация уже давно загружена, тупой ретард.
>обращение к винту
вообще пушка
Впрочем, не совмневаюсь что в твоей игре каждый аналог атаки персонажа - обращение к винту, лол
вот же упырок
проигнорировал твой пост
>О боже, нет, только не сендмесседж, пожалуйста, не будь таким же дегенератом.
Поясни за минусы подхода. Получится невнятное спагетти, если злоупотреблять? Что-то вроде goto?
Не он, но - нет, в принцип ничего плохого нет, однако для fast-paced игр или вообще для игр с очень активным геймплеем это не рекомендуется.
Braodcast/SendMessage - вариант системы евентов для нищебродов. Заметно проще, но в целом хуже считается
Основной минус в том, что эта херня не проверяется компилятором - соответственно может незаметно для тебя сломаться при рефакторе. По сути, ты превращаешь нормальный, строго-типизированный язык, коим является диез, в подобие джаваскрипта с багами, которые могут вылезти из ниоткуда.
Менее важный минус в том, что она использует рефлекшн, а значит просто пиздецово тормозит цифры порядка x10-50 по сравнению с GetComponent.
А самое главное, нет никакой причины предпочитать сендмесседж прямому вызову метода компонента - они работают абсолютно одинаково сендмесседж так же блокируется в месте вызова, пока обработчик не обработает его, по факту, это никакой не "месседж"
Статьи на тему.
https://github.com/Microsoft/MixedRealityToolkit-Unity/issues/224
http://www.sebaslab.com/whats-wrong-with-sendmessage-and-broadcastmessage-and-what-to-do-about-it/
Любая херня, которая что-то делает через рефлекшн - сразу нахуй. Вместо Invoke лучше использовать корутину, на 2 строчки больше, зато потом не надо бегать с пылающей жопой почему что-то отвалилось.
Я так и думал. Еще одна просьба - если есть на примете статья или туториал для ньюфагов про использование корутин с примерами, то вкинь линк, пожалуйста, буду очень признателен.
>нет никакой причины предпочитать сендмесседж прямому вызову метода компонента - они работают абсолютно одинаково
дурачок так и не понял принцип использования SendMessage.
если сообщения для тебя это всего лишь вызов метода у компонента, тогда действительно нет никакого смысла в сообщениях.
нет там рефлексии.
вся разница только во времени биндинга. send message это рантайм биндинг. так же, как и get component, например.
Удаление != рефактор имени.
Ошибка при компиляции != ошибки в рантайме.
Чему вас на первом курсе там учат?
и в чем разница? в обоих случаях будет неопределенное поведение в рантайме. SendMessage выводит ошибку, GetComponent выводит ошибку.
>Рефлексия != as
какая разница как это сделано. в недрах c++ кода юнити тоже может не as.
суть рефлексии в том, что происходит рантайм биндинг. ты получаешь члены во время выполнения
> и в чем разница?
> какая разница
> всё же в ассембляр канпилируется РРЯЯяяя
Вся суть даунов, не способных даже открыть книжку по .Net. Просто о чём можно разговаривать с такими
> неопределенное поведение
Давай еще термин из нативных языков суда сунем, какой же ты дегенерат, просто пиздец.
Профайлером проверь, ты наверно где то обосрался. Или данных слишком много
Первый вариант: использовать уже существующий чтец цсв файлов и сделать скриптинг через цсв файлы, т.е. выглядит что-то вроде if;A;<;B;Action[новая строка].
Второй вариант: сделать свой джасс/параходокод для текстовиков со своим собственным ридером. В принципе, то же самое, что и первый вариант, но можно сделать всё красивее для пользователя. Я ебанутый, мне больше первый вариант нравится
Третий вариант: каким-то образом вставлять в игру c# скрипты. Собственно, вопрос касается большей частью этого варианта - возможно ли такое вообще? Допустим, сделаю анальное ограничение, чтобы вставленный скрипт наследовал от какого-то скрипта в самой игре. Как это по безопасности?
Насчёт третьего:
https://stackoverflow.com/questions/32290705/how-do-i-import-a-c-sharp-monobehavior-script-during-runtime-and-add-it-to-a-com
UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent(gameObject, "Assets/Scripts/DNA/DNA_translator.cs (21,4)", gameObject.name);
Что это за зверь вообще?
>>496748
Ещё глянул:
http://angryant.com/2010/01/05/downloading-the-hydra/
Т.е. .cs загружать в рантайме можно, но это, очевидно, не безопасно. Выходит, лучше сделать ридер, который будет генерить .cs файл с нужными параметрами, юзингами и т.д. Сделать, так сказать, конвертер, который будет отсекать всё, что не надо. Но тогда зачем генерить .cs в принципе, просто сделать чтец строк а-ля "если первая ячейка строки совпадает с именем команды, то запускать команду, вставляя в аргументы следующие ячейки" и норм будет (у меня так сейчас и есть в цсв ридере).
Помогите же советом, ну. Я не знаю, как поступить.
Зачем тебе скриптинг на диезе, когда основной язык - диез? Это пиздец наркомания какая-то. разве что у тебя мультиплеер и ты будешь давать игрокам поскриптить что-нибудь, но и в этом случае диез - это пиздец, а не выбор, из-за проблем с try catch finally-троллями, которые в принципе не решаемы - выебал так к хуям пару конкурсов
Для скриптинга обычно пихают интерпретатор другого языка, для этого есть либы, не ебу что тебе нравится. Для своих проектов я как-то ебанул интерпретер лиспа, было забавно, до тех пор пока я не заебался связывать скрипты с главными системами юнити и не забил хуй на это.
Посоны, что происходит?
float x = 0.1f;
float y = 0.2f;
float z = 0;
var lol = new Vector3(x, y, z);
lol равен {0,0,0}
Как???
> strings так же безопасны как symbols
> ошибки в рантайме так же безопасны как ошибки при компиляции
> duck typing так же безопасен как static typing
> ебаться в жопу так же безопасно, как и дрочить
Мда, этот даун так и не понял ничего.
Не будет у тебя никаких ошибок компиляции. Просто у тебя будет ошибка null reference exception если ты попытаешься получить компонент, которого нет на объекте.
Когда ты посылаешь сообщение, ты не "вызываешь метод компоненты через рефлексию". Это то, как это может быть технически реализовано. А может и не быть.
Если конкретно в твоем MonoBehaviour нет метода с именем сообщения, то это значит лишь то, что этот компонент не является обработчиком этого сообщения. Вот и все.
Конпелция, static typing и т.д. тут совершенно не причем.
Где у тебя флоаты задаются? Public'и в теле класса? Измени на private'ы, сразу заработает, если так.
>Зачем тебе скриптинг на диезе, когда основной язык - диез?
Это просто вариант такой. К тому же "связать с главными системами юнити" было бы проще (а на самом деле я даже бейсика не знаю).
>Для скриптинга обычно пихают интерпретатор другого языка
Хитро, дёшево и сердито. Даже не думал о таком, лол.
Скриптинг мне нужен для моддерства. Ну, и для меня самого, чтобы быстрее карты со сценариями строить. Какие-нибудь сложные действия захардкодить, например, поиск путей, а простые, - вроде отъёма очков передвижения за движение, - можно и во внешний изменяемый скрипт вынести.
Оопущенский дегенерат до сих пор путает рефактор с удалением. Оопущенский дегенерат до сих пор путает свои маняфантазии с конкретной реализацией SendMessage в юнити. Просто как горох об стену, уже 2 месяца. Нахуй, просто нахуй.
> может быть технически реализовано. А может и не быть.
Какой же ты даун. Разговор за конкретную реализацию конкретного метода в конкретном движке юнити, блять, посмотри на шапку треда. И эту реализацию не рекомендует юзать вообще никто.
Твои личные велосипеды по работе с сообщениями могут идти строго нахуй, пока они а) не будут на гитхабе б) не будут использованы в нескольких законченных играх.
Чего не будет никогда, потому что ты, дебилоид, так ни одной игры и не написал, только срешь во все треды подряд о своих ооп-фантазиях.
Не вижу проблемы с тем, чтобы делать это все на диезе скриптами юнити. Компилируется все за пару секунд. В общем, подумай, ты точно уверен в том, что тебе это надо? Ведь мог бы игру делать.
>Какой же ты даун. Разговор за конкретную реализацию конкретного метода в конкретном движке юнити
Вообще-то разговор о том, почему
>эту реализацию не рекомендует юзать вообще никто
Основной претензией там является то, что якобы "ряяя метод выполняется через рефлексию, а если кто-то переименует метод, что тогда?"
И как выясняется, все доводы на самом деле высосаны из жопы, так как горе-критики не разбирающиеся в принципах абстракций сами не понимают что несут. Для них SendMessage это способ зачем-то "выполнить метод через рефлексию".
> SendMessage просто вызывает метод через рефлекшн
> почему все говорят о вызове метода через рефлекшн??!111 ррряяяяя
Photoshop -> Image -> Image rotation -> 180
> Calls the method named methodName on every MonoBehaviour in this game object.
Заебись идея вообще, давайте вместо 1 метода - вызовем все с совпадающими именами. Это же так нужно нет, и не приведет к еще большему пиздецу, чем другие проблемы этой параши.
Как можно топить за эту хуйню вообще? Ты поехавший?
> документация
> SendMessage
public class ExampleClass : MonoBehaviour {
void ApplyDamage(float damage) {
print(damage);
}
void Example() {
gameObject.SendMessage("ApplyDamage", 5.0F);
}
}
На этот замечательный код можно смотреть вечно. Его надо распечатать и повесить на стену в рамочку.
Почти. В рантайм метаданных ищет, с помощью сравнения строк.
Это ужасный пример. Может быть, не в последнюю очередь столько недопонимания SendMessage основано именно на этом примере.
Вот давно мечтаю сделать игру по типу Audiosurf, но не могу понять каким образом они считывают данные музыки и переносят это в игру. Может знающие люди объяснят или поделяться ссылками по этой теме?
Короче есть vuforia точеная и модель с анимацией дроченая.
Анимация по первому распознаванию метки не проигрывается, если юзать кнопку перехода к другой модели и оттуда вернуться, анимация идет как надо. Как заставить эту суку запускаться с самого начала?
>Какие-нибудь сложные действия захардкодить, например, поиск путей, а простые, - вроде отъёма очков передвижения за движение, - можно и во внешний изменяемый скрипт вынести.
Поехавший, зачем тебе виртуальная машина в виртуальной машине?
Алсо, без обид, но твой язык говорит что ты нифига не понимаешь куда лезешь. И делать тебе это лет 5.
Неа, новую Викторию. Генералы, если это то что я думаю, там не было провинций и был ОЧЕ умный ИИ, мне такой не сделать.
Спасибо.
Да, обосрамас был жидкий и по всем фронтам, короче хуйню там наебашил, везде по чуть чуть, главное это апдейт размеров канваса каждый фрейм с дробными частями, хотя они не нужны. Сейчас подшаманю, подчистю за собой или скажу насрано уже было, и перейду к замесу волюм алертов. Уж слишком смачно альткоины стреляют, вчера на коробку доширака заработал.
>И делать тебе это лет 5.
Делать что "это"? Конкретно эту фичу или вообще? Вообще - наверное так и выйдет, но в свою защиту хочу сказать, что пилю я не тупенькую игру, где всё захардкожено и где только сам программист может что-либо изменить, а нечто ближе к варкрафту в плане возможности менять диалоги, сцены, юнитов, всё такое.
Вот ты пошёл стопами парадоксов и сделал какое-то количество форм правления, которые изменить никак нельзя. Только ты их можешь менять, разве что пару дефайнов вынесешь куда-нибудь. Если делать аналогию основываясь на этом, то я пилю систему, которая позволит моддеру сделать свою собственную форму правления, приложить скрипт и получить нужную распознаваемую игрой форму правления, а не ебаться и хитрить с ивентами, как это делается в королях крестоносцах, чтобы сделать в гехеймниснахте вампиров с орками.
>>496404
>>496424
Пиздец вы эксперты блять, сам нагуглил, проблема достаточно распространённая, все решается через LoadSceneMode.Additive. Чем вы тут занимаетесь, вы игры вообще пишите? почему с таким не сталкивались? я так понимаю это основы же, епта
https://forum.unity.com/threads/input-getkey-reset-on-load-scene.143321/
Тебе и ответили, если ты не в курсе, что значат все те слова из постов, то это твои персональные проблемы.
Удачи грузить все сцены аддитивно кстати.
Так мне нихуя не ответили, меня за долбоеба посчитали, который сценарий бега будет на сцену вешать, и про донтдестрой, а как бы я в другую сцену переходил если бы его не использовал? Бег реализован через эдфорс, но тут проблема то не в беге, а в загрузке сцены, при которой слетает инпут. В чем проблема аддитивности? Как решить проблему другим путем, или по вашему такой проблемы не должно быть? Сценарий висит на плеере, который переносится в другую сцену донтдестроем, если в дверь прыгнуть например то инерция сохраняется, слетает только инпут
Так мне нихуя не ответили, меня за долбоеба посчитали, который сценарий бега будет на сцену вешать, и про донтдестрой, а как бы я в другую сцену переходил если бы его не использовал? Бег реализован через эдфорс, но тут проблема то не в беге, а в загрузке сцены, при которой слетает инпут. В чем проблема аддитивности? Как решить проблему другим путем, или по вашему такой проблемы не должно быть? Сценарий висит на плеере, который переносится в другую сцену донтдестроем, если в дверь прыгнуть например то инерция сохраняется, слетает только инпут
>В чем проблема аддитивности?
Никаких проблем, если ты знаешь что это, как работает, какие проблемы может вызвать. Если ты покурил матчасть - делай смело.
>Как решить проблему другим путем
Через синглтон.
Охуенный тред, вы че тут всех посылаете матчасть курить и все на этом? Зачем этот тред вообще тогда нужен, чтобы ты выебывался тут?
А нам что, пересказывать тебе всю документацию? Тебе говорят на какие пункты обратить внимание.
Нет, этот тред нужен чтобы бесплатно залетных ньюфагов учить азбуке.
В этом треде мы обсуждаем новости о unity, делимся своими находками и спорим почему SendMessage является лучшим паттерном программирования.
Двачую. Вообще не понимаю, зачем помогать конкурентам? Чем меньше людей разбираются в юнити, тем лучше тем, кто в нем разбирается хорошо.
Я уже жалею что вообще рассказал о преимуществах SendMessage. А так бы писали свой говнокод и никода бы не сделали игру.
Фу блять, аж мерзко стало от того, какие вы здесь черти. Идите нахуй короче, ребята
Очередному недотепе не сделали игру лол.
Кто-то в поте лица учит движок, разбирается в архитектуре, разрабатывает наиболее лучшие паттерны. А какой-то кирилл потом просто копипастит весь его труд и зарабатывает миллионы на чужом труде, не поделившись ни копейкой.
Мерзко от таких как ты.
Так ты и сам то нихуя не знаешь, поэтому и не можешь ответить, разрабатывает он там патерны, полуебок. В этой сраной документации два предложения на любую тему и все на этом. У тебя миллионов нет не потому что тебя кто-то опережает, а потому что ты бездарное говно. Это в любой сфере так, только неудачники находят себе оправдания в конкуренции
>У тебя миллионов нет не потому что тебя кто-то опережает
Именно поэтому.
Слишком много расплодилось таких хаков как ты, которые тупо копипастят готовое и выдают за свои игры. Невозможно с такими конкурировать. Они тупо по закону больших чисел делают прибыльные игры одну из миллиона.
Такие как-ты наносят ущерб.
Ты долбоеб? Че я у тебя там спиздить хотел, как из уровня в уровень переходить? Простому игроку вообще похуй на это, главное история, геймплей и графон, а все это я точно пиздить не собирался, тем более у такой бездарности, как ты. И вообще харэ меня троллить, ебаная школота, как вы заебали
Ты долбоеб? Че я у тебя там спиздить хотел, как из уровня в уровень переходить? Простому игроку вообще похуй на это, главное история, геймплей и графон, а все это я точно пиздить не собирался, тем более у такой бездарности, как ты. И вообще харэ меня троллить, ебаная школота, как вы заебали
Код, архитектура игры - это такая-же интеллектуальная собственность как и арт, сюжет.
>Код, архитектура игры - это такая-же интеллектуальная собственность
>У ТИБЯ НЕТ ИГРЫ РРЯЯЯ!!!
У меня есть кое-что получше: архитектура игры.
>У меня есть кое-что получше: рисунок архитектуры игры на последней странице тетради по литературе
> архитектура игры
> без игры
> вообще не написал ни одной игры
Вас надо с шизописакой в одну команду, у него как раз архитектура текста придумана.
Поднял VPN - заработало, но либо пиздец медленно либо с ограничением трафика либо за деньги.
Это что ж, когда на днях роскомнадзор блочил айпишники миллионами, под раздачу попал весь диапазон коллаборейт-облаков?
Теперь всю жизнь на VPN сидеть что ли?
>Спиздил код
>Спиздил геймплей
>сделал пиксель-Залил заливкой 10 пикселей-арт
>Мам, смотри, я игру сделал!
да, продолжая за путенга горлосовать и на диване сидеть
В Армении тем делом ламповость наступила
Ну у другого провайдера всё работало и с тем же путеным и с тем же диваном. И вообще у нас тут не /ро/.
Вопрос в другом - как бы это дело обойти через какую-нибудь проксю. Знать бы по каким адресам юнька стучится в свои облака.
Отпишись им на баг-трекер с описанием траблы, лет через 5 сделают выбор прокси.
Здрасьтитя. Непрограммист-негейм дизигнер итт. Объясните неумному. Если я создаю C# скрипт, он наследует от MonoBehaviour и в нем по умолчанию есть методы Start() и Update(). Дальше я вешаю его на что-то в сцене. Это вводная. Вопрос: если я удалю из этого скрипта метод Update() - то в этом скрипте он срабатывать уже не будет?
> спиздил умение ходить у родителей
> спиздил знания в вузике
> спиздил комп
> спиздил еду в магазине
> мам смотри я успешный погромист!
Не слушай, он подъебывает, апдейтов вообще чем меньше, тем лучше для производительности. Наверни книг по юнити, там кратко и по сути
Ок. Спасибо.
тащемта бессмысленный совет. Апдейт все равно дает лаги, даже если его нет. Так менеджер скриптов работает
Если очень много будет то навмеш наверное, а если до 50 то можно просчетом - так точнее будет, ибо проще обрабатывать разные случаи.
> пилить через навмеш или каждый кадр просчитывать вектор?
Через навмеш agent.destination также дохуя чего просчитывает каждый кадр, особенно если цель движется.
Почему все измеряется в каких-то шизоиндых ЮНИТАХ, а не пикселях? В таком случае, как сделать так, что бы 1 юнит = 1 пиксель? И как можно скейлить спрайты без сжатия/сглаживания?
Сам 2д не сильно дрочил, но в книге как-то так написано.
Collider[] colliders = Physics.OverlapSphere (explosionPos, radius);
foreach (Collider hit in colliders) {
if (hit.gameObject.tag == "enemy") {
Rigidbody rb = hit.GetComponent<Rigidbody> ();
gunLine.SetPosition (0, hit.transform.position);
}
Почему-то рисуется только одна линия, видимо к ближайшему обьекту
> gunLine
Чё это за хуйня? Прозреваю, что она у тебя одна и ты ее двигаеш как еблан в цикле, естественно остается только последнее ее положение.
Пошел на форум и сходу наткнулся на тему 2017.2.0f3 Editor Very Slow?, тянется до сих пор, разрабы жуют сопли. Не я один такой, оказывается. Ну ее нахуй, хуюнити вашу, ебитесь сами.
Суть такова:
v = Input.GetAxis ("Vertical");
if (v != 0)
// действие, если персонаж идёт вперёд/назад
else
// действие, если персонаж стоит или идёт вправо/влево
Проблема в чём. Если отпустить кнопку "вперёд" или "назад", то ось не сразу скидывается в 0, а где-то через пол секунды.
Как отловить что игрок отпустил кнопку вперёд/назад и выполнить нужные действия в тот же кадр?
Можно, конечно, поставить проверку нажата ли кнопка W или S, но это же оси, их можно на что угодно перебиндить.
Блять, Абу мамку ебал с такой капчей, лучше б светофоры считал
Благодарю.
https://www.assetstore.unity3d.com/#!/content/95117
https://youtu.be/Vh9msqaoJZw
Ух ты! Наконец-то УЕ4 добрался до технологии 5-летней давности от Nvidia - FaceWorks
1. Не увидел реалистичных персонажей.
2. Не понял какая связь между контентом и движком, если все движки в конечном счете отправляют одинаковые команды рисования в видеокарту.
3. Ничего кроме раздувания бюджета и маркетинга, реалистичная графика игре не приносит.
> одинаковые команды рисования в видеокарту
Как жи, там жи нодовый шейдерный редактор, даже последний васян заебошит нет subsurface scattering ебабельной няше в бете бнити тоже ебанули, кстати
Ой иди ка ты на хуй, это на юньке нет больших игр, а на уече их дохуя, причём все прибыльные.
Уеч используется с начала нулевых и является одним из самых распространённых движков среди профессионалов, а чем запомнился юнити - говноинди, которые ничего не стоят и лишь являются подобием видеоигр?
И вдовесок по C#.
Желательно на русском, но и на английском норм.
В установщике юнити есть галка скачать доки.
Надо: открыть доки + открыть юнити, и читать строго с первой страницы, и чтобы сразу, как что-то узнал - тут же сделал/тыкнул что-то в юнити.
А в книгах/видео что-то могут упустить, или слишком долго разжевывать. Или навязывать свой стиль программирования.
А если ты дочитаешь доки от корки до корки, то можешь с уверенностью считать, что знаешь все, что касается юнити.
Книги и видосы следует смотреть после, для закрепления информации, или для прояснения особо непонятных моментов.
Я после изучения доков купил курс на распродаже за 10 баксов, (https://www.udemy.com/unitycourse/), видосы по сей день новые добавляются и вообщем-то ничего нового не узнаю до сих пор
Блин, ну вот мне не нравятся доки, там же очень кратко и без вникания в подробности всё
Слушаюсь, мой скриптогосподин. Полагаю, что здесь я уже всех унизил своим посещением и могу удалиться. До новых встреч на просторах чебурнета.
>Удачи грузить все сцены аддитивно кстати.
Там через корутину же на мгновение, что бы сделать неразрывный переход, чтобы инпут не слетал
Мозг то включи, при Pixel Per Unit у тебя 1 пиксель будет размером с 1 юнит. Хочешь квадратный спрайт размером с 1 юнит - ставь в Pixel Per Unit размер его стороны в пикселях.
Надо глянуть че за колбэк, есть пример?
А чем криво?
Сделать коллайдер платформы шире.
1. Сделать квадратный коллайдер и вместо нескольких коллайдеров для пола использовать один. В тайловой карте можно объединить все коллайдеры в один. Еще есть edge collider.
2 Никак. Только пилить собственный контроллер.
На дефолтной физике хорошо делать прототипы.
Я не он, но спрошу. Какие альтернативы физики есть?
Качаю Bullet Physics for Unity ассет, буду разбираться.
Нужно реализовать рельсы и колесо как у настоящего поезда, соответственно физическую симуляцию передвижения - не просто path.
Как лучше сделать?
Отключить гравитацию и реализовать свою.
Все выполняется в пару строчек кода, имена спрайтов "1" "2" "3" и тд. имена баттонов для покупки анологично "1" "2" "3" и тд.
Проблема = В Unity все работает отлично = спрайты меняются, покупки происходят, но в сборке проекта не работает ровно нихуя, спрайты не меняются, хотя покупка происходит. Проверил на парс, в сборке все парсится правильно(3 пик), Как пофиксить?
У тебя твой манясписок со спрайтами как реализован? Проверь чтобы в сборке все на месте было. И вообще, зацепись на https://docs.unity3d.com/ScriptReference/Application.LogCallback.html, выведи в UI текст и посмотри что тебе в сборке пишет.
В глаза ебусь. Все равно имеет смысл дебаг чекнуть.
Нет, в обоих случаях будет одно копирование, это же велью тайп. Из поля класса в куче еще медленнее небось, но по факту это совсем пиздец уже, хуй забей.
Нет
Хуже будет, ты помешаешь авто-оптимизации. Игры делай, не байтоебствуй.
>Ассетстор работает только через впн, интересно.
Вут. Вроде норм с мобилы и домашнего иннета.
Может твой провайдер перестарался.
> Может твой провайдер перестарался
Мой тоже. И коллаборейт под запретом и developer.cloud.unity3d
Писал провайдеру - сказали что залочено по решению РКН и, внезапно, налоговой службы.
>внезапно, налоговой службы.
Правильно. НЕхуй деньги зарабатывать игорами зарубежом, да еще под и в треклятых долларей! буржуи какие? А ну, сначала за путена голосовать, а потом на завод.
У тебя пораша протекла, возвращайся туда.
https://www.youtube.com/watch?v=zc8ac_qUXQY
>Нету больших игр
>Pillars Of Eternity
>Rust
>Life is strange
>Tyranny
>The forest
>Escape from Tarkov
>Дохуя других
Вопрос, что вы несете? Долбаебы? Вы хоть иногда думаете перед тем, чтобы что-то высрать?
Забыл херстоун, kerbal space program, cities: skyline, тред порноделов по соседству заставляет вспомнить тот же honey select и т.д. Сейчас этот шизоид напишет про то что "никанон что создатель движка не делает на нем игор".
Соснули все.
>деньги зарабатывать игорами зарубежом
Прикинь, что похую, ГДЕ ты их зарабатываешь. Налоги во всех нормальных странах платишь, ГДЕ проживаешь.
Если спавню как GameObject yoba = GameObject.Instantiate(prefab, transform);
и тут же планирую пидарешт через Destroy(yoba, 60f);
есть ли возможность опросить сому yoba, сколько ей осталось до пидарешта?
Зачем мне это нужно:
спавню зомбаков и отправлаю гулять
хочу за пару секунд до дестройя сыграть эффектную агонию из бесплатных ассетов партиклоф
или ненаркоманы делают как yoba.lifespan = 60f, чтобы yoba себя убила через заданное время?
С юнету первую неделю. Убийца фаркрайя на стадии закрытой беты.
Сделай отдельный скрипт, который этим делом будет заниматься, и повесь на префаб зомбака. При спавне пусть отсчитывает и затем красиво умирает с партиклами.
То бишь предлагаешь делать менеджера, который бы держал спавнутых в списке до унижтожения?
Мне больше нравится, если бы зомбак был максимально автономен, т.е. сам являлся полноценным префабом со своим набором аудио, эффектов и прочей AI-шной обёртки.
Я только в процессе поиска собственных "паттернов".
Сделаю так: public float timeToLive будет устанавливаться прямо после создания. Сам с корутине отсчитает, когда включайть предсмертный салют, и пидарештится через Destroy(gameObject);
>То бишь предлагаешь делать менеджера, который бы держал спавнутых в списке до унижтожения?
Ты чем читаешь, блять?
Просто иди нахуй
Cоздаешь DestroyableThing, который в старте запускает корутину и накидывает себе время жизни. Как только это время превысило выставленный лайфтайм, вызывается UnityAction OnDestroy и объект дестроится.
Так ты сможешь потом вызывать что там тебе нужно при смерти: анимацию применить или нового моба спавнить.
Можешь там же сделать метод, который возвращает тебе, сколько мобу осталось жить.
Можешь еще колбэк OnTik сделать и дергать его каждый тик, чтобы например это время жизни где-нибудь в гуи показывать.
Короче будь молодцом, не пихай все в один класс, разделяй и влавствуй.
> не пихай все в один класс, разделяй и влавствуй
Вот этот пидор всё правильно говорит.
Чем больше ты разделяешь роли - тем больше у тебя пространства для манёвров.
Ебать, нахуя тебе это? Что за изъебы. Ну подели ты спрайт руками двигай. Если очень хочешь, можешь кодом нарезать, но нахуя.
Объясни хоть, зачем тебе это.
А можешь посоветовать годноты от туда?
Вообще сейчас в сторе майские скидки, может посоветуете полезностей на которую и разориться не грех, а то я не а теме немного, вообще сам пилю 2д платформер рпг. В основном интересую технические моменты всякие, а не визуальные
На счёт херстона соглашусь, наверно единственная первоклассная игра на юнити, но учитывая двумерность игры, близзарды могли реализовать её хоть на гамаке, хоть на короне.
Список выше где всякие PoE и тарковы это явны не игры первого эшелона.
Нужно для прототипирования - на качество похуй, лишь бы различимо было, а юнитов несколько, поэтому просто поносить в консоль что происходит - уже не катит.
Попробуй из мугена спиздить. Оно вроде как открытое, и туда тащат персонажей из всех файтингов.
Его и нет, есть только директионал.
https://blogs.unity3d.com/2018/05/02/2018-1-is-now-available/
ПКМ по консоли. А дальше разберешься.
Убери серый куб.
Спасибо.
>дефолтная сцена, без источников света
wow
долбоеб с двача не умеет читать, кто бы мог подумать
Найс маневры, только на вопрос уже ответили
btw "упырок" и "зажопинск" это самые клевые словечки у тебя в классе сейчас?
https://assetstore.unity.com/packages/tools/visual-scripting/playmaker-368
Если это стандартный шейдер, то до конца ты ее не уберешь. Всегда будет оставаться 4%.
Тормозить начинает жутко, вроде как объект прорисовывает дополнительный кадр, или типа того. Речь идет о 2д, как рассчитывать такие моменты?
Нужно из цилиндра сделать колесо, которое начинает крутиться по нажатию кнопки и поворачивать по нажатию другой, в т.ч. поворачивать в движении.
Делается это, как я понял, через addTorque().
Только непонятно, куда и как применять силы. Подскажи, анон.
Когда одновременно указан крутящий момент по Z и по Y, колесо начинает крутиться почему-то по X.
Как лучше сделать?
Astar pathfinding project, бесплатный ассет в котором можно сделать ходьбу между произвольно расположенными точками.
>Astar pathfinding project
Спасибо, помотрел. Только у меня, в стратежке, вроде как разные графы для разных стран получаются. В том смысле, что граф то один, но цена перемещения разная, т.к. некоторые страны разрешают проходить сквозь их территорию, а другие - нет. Вот думаю, то ли кучу графов запилить, то ли на велосипед сесть. А все что нужно метод типа "верни узлы кратчайшего пути учитывая что мы можем ходить только по своим провинциям, провинциям союзников и провинциям врага"
Каким средством удобнее всего реализовать скриптованные действия в 2д игре, типа автомобиля, который начинает ехать когда в определенное место подойдет игрок?
Спасибо за ответ.
Написать Скрипт? Который будет в апдейте или в ОнКоллайд двигать машину?
astar поддерживает разную цену пути по ребрам графа алгоритм, а не ассет, но если его не полные долбоебы кодили, то должнн
Любой инструмент визуального программирования - костыль, забирающий у тебя свободу в написании кода в обмен на компенсацию твоей некомпетентности.
Годнота tier - писать код самому, понимать, что и как работает, читать документацию, читать/смотреть туториалы.
Mid tier - использовать костыли.
Макака tier - копипастить чужие скрипты не разбираясь.
>GL, как будет работать связь с сервером? Ну вот подписатсья к примеру на вебсокет, будет машина подписываться на которой открыт сайт с игрой, или сам сервер на котором лежит вебГЛ параша?
Какой сервер укажешь, на тот и будет подписываться. Сервер может располагаться как на сайте, так и на удаленной машине.
Маладца. Я у мамы тоже скриптблобджект-фанатик. Ещё написание кастомных инспекторов открой для себя, если ещё нет. Будешь кодить, а потом игры из своих асетов собирать и ползунки крутить.
Отвратительно.
Я просто документацию читал. Со scriptbleObject особо знать ничего не нужно, кроме того, что что они существуют. Ну ещё ты не запехнёшь туда объекты со сцены и какую-то логику взаимодействия с ними, то есть они тупо для удобного хранения и редактирования данных нужны. Типа создал по скрибтблобжекту для каждого противника, скрибтблобжекты для итемов, для бонусов, один для общего баланса. И пихаешь их в свои скрипты.
А насчёт редакторов, это по сути свои окна редактирования сериализуемых значений в юнити. Можешь просто попробовать написать кастомных инспектор для какого-нибудь из своих скриптов, параллельно гуглить, что тебе нужно и дописывать"unity inspector". Только там старый гуй используется, если через GuiLayout ещё норм, но в некоторых случаях приходится нарезать квадраты, что может вызвать лёгкое подташнивание.
Нахуй нинужны, хуита без задач. Нахуя отделять данные от поведения? Первокурсники максималисты, блять, лишь бы модно было, а профитов в 2х файликах вместо 1 монобехевиора в котором точно так же крутишь ползунки в инспекторе никакого. Только читать тяжелее, что у тебя код моба делает с данными, которые какого-то хуя не в мобе. Зачем?
Затем, чтобы написать один monobehaviour, а потом для запила 100 мобов создать 100 scriptableobject'ов через меню, перетащить на них меши, материалы, анимацию и 10 разных классов с поведением, получив в итоге удобный инструмент разработки мышкой и работающие из коробки сейвы в качестве полезной нагрузки.
Не знаю, зачем я пытаюсь переубедить заскорузлого говнокодера, правда. Можешь делать как тебе удобнее.
Спасибо за наводку, поковыряю.
Ты конченый долбоеб. У меня 1 монобехавиор моба и 100 префабов с ним, в которые я, внезапно, мышкой перетаскал меши материалы и вбил параметры. Как делал и 5 лет назад. В чем отличие от твоей схемв со 100 скриптабл? Ни в чем, но первокурснику важно поюзать блидинг эдж, я понимаю.
Алсо твое скриптаблговно не поддерживает сейвы больше чем plain old если бы ты почитал документацию, то знал бы это, но ты же восторженный долбоеб.
Ничем не отличается от префаба
Зачем возражать, когда ноускилл дрочит на единственную известную ему вещь? Мне не жалко, можешь продолжать.
> использовать самую последнюю ебатню, нужна она не нужна похуй
> показатель скилла
Вся суть школьников просто. Взрослые люди осваивают все инструменты, проводят сравнение, и потом пользуются тем, что подходит.
Ты конечно ретроград ебучий, так реально удобнее.
Кстати забавно, но для таких как ты любителей обмазываться префабами юнитеки запилили пресеты в 2018-ой версии, по сути своей те же scriptbleObject-ы, но только для редактора. Глянь, может понравится. Можно создавать темплейты для настройки скриптов, должно быть удобная штука, мне правда не пригодилась пока.
> пресеты
Еще один нахуй нинужный костыль для долбоёбов, которые никак не могут освоить префабы. Максимум, что надо впилить и они обещают таки впилить в 2к18 - это нестед префабы, всё, блять. Прекрасно все собирается с замечательным воркфлоу.
Нет, блять, дегенераты не могут освоить один нормальный инструмент и начинают ныть оой дайте нам еще какую-нибудь хуйню. Разрабы юнити тоже хороши, прогибаются под дибилов вместо нормального дизайна системы жесткой рукой.
Код примерно такой:
Vector3 direction = target.position - ball.position;
float arrowPosition = Mathf.Atan2 (direction.y, direction.x) * Mathf.Rad2Deg;
arrow.localRotation = Quaternion.Euler(90, 0, arrowPosition);
Он тоже не работает в моем случае. И я не понимаю, почему.
Мне надо просто повернуть стрелку по OZ-координате и никак не получается.
Ты же в 3д пространстве? Как ты туда спрайт засунул? На кваде или может извратился как?
Да. Но хоть как то поворачивается?
transform.LookAt(target, target.up);
В редакторе крутится. Вот я стрелку поворачиваю вокруг OX на 90, и она ложится на землю. Дальше ворочаю вокруг OZ, и она опять же двигается, как мне нужно: крутится вокруг оси.
Второй параметр у LookAt() указал. Так стрелка смотрит в сторону цели, но как бы "дном". То есть, не хватает вот этого поворота по OX на 90.
Затем у тебя вращение только по Y. Vector2 мяча есть, vector2 лунки есть - в чем дело?
ну пихни спрайт в стрелку дочерним объектом и поверни его внутри на 90 градусов, чего ты себе мозг ебешь?
По какой метрике "ближайших"? Что значит "произвольных ближайших"? Ты скажи, что ты хочешь сделать, а то пока звучит как какой-то пиздец.
10к х 10к сравниваний с извлечением квадратного корня звучит просто замечательно!
>>498276
Как же я люблю этот тред. Каждый раз приходится объяснять хуиту как детям. Допууустим, смари, есть 10к геймобжектов. Понял? И на каждом корочи висит компонент который говорит "Вот число. Хочу вот стооолько ближайших ко мне геймобжектов было в этом листе". Каждый фрейм. И геймобжекты двигаются ещё.
>10к х 10к сравниваний с извлечением квадратного корня звучит просто замечательно!
Так ты сука тупая каждый кадр хочешь это делать?
Тогда заебешься, ибо дешевого метода тут нет.
А раз при загрузке левела или рестарте чекпоинта, whatever - без проблем.
Более дешевое разумеется октодерево, но построение самого дерева тоже жрет. Поэтому я пришел на двач спросить советов мудрых. Может кто-то знает больше меня.
А векторы сырые или какой контекст? Если обьекты м.б. кастануть сферу там или чо
Иначе да, строить древо, держать и обновлять кэш
Физоном я это делать не могу, так как мне это надо сунуть в другие потоки. Где хуй а не API юнити. Так что да, в контексте вопроса это просто какая-то хуйня у которой есть позиция.
Собственно спросил потому что само построение жрет хорошо. Малину портит то что объекты могут двигаться.
>Малину портит то что объекты могут двигаться.
Ну так обновляй кеш AABB tree? А как ты думаешь раньше у Юнити имплементация статик-коллайдеров была? При любом движении оного кэш перерасчитывался.
Во-первых, ты долбоёб, не умеющий описывать задачу нормально.
Во-вторых, ты долбоёб, который не понимает, что рассчитывать 10 соседей на 10к объектов каждый фрейм - это пиздец в любом случае.
В-третьих, если плотность точек примерно одинакова, с этим справится обычный грид. Дерево пересчитывать очень сложно, а грид нет.
> объяснять хуиту как детям
Откуда мы знаем, какая у тебя метрика расстояния между векторами идиотина? Она вообще-то разная бывает. Например, косинусная. Понаберут по объявлениям.
Большинство векторов будут двигаться все время, так что нет смысла проверять кеш даже
>>498288
>Во-первых, ты долбоёб, не умеющий описывать задачу нормально.
Специально для тех кто не умеет читать я описал после этого более простым языком. Здорово, да?
>Во-вторых, ты долбоёб, который не понимает, что рассчитывать 10 соседей на 10к объектов каждый фрейм - это пиздец в любом случае.
Этот вопрос не рассматривается так как задача не может быть упрощена. Потому что сама задача абстрактная и я выбрал наиболее хуевый вариант развития событий. Писать код который будет применяться не тобой и в хуй знает в каких условиях увлекательно, правда?
>В-третьих, если плотность точек примерно одинакова, с этим справится обычный грид. Дерево пересчитывать очень сложно, а грид нет.
Ноуп, плотность точек тоже произвольная. Единственное что можно сказать об условиях сверху сказанного это то что вряд-ли будет происходить поиск более 20 соседей.
>>498289
Метрика в попугаях нахуй. 3д векторы в 3д пространстве.
Та же херня. Если кто знает решение будте добры не молчите.
А ну точно, но все равно, по истечении этого года если не продлевать подписку, то можно чтобы моя игра продолжала продаваться без заставки?
Да.
> задача абстрактная и я выбрал
Тогда можешь пройти нахуй. Если ты даже не можешь себе представить пределы изменения плотности по времени и координатам, как ты собрался выбрать структуру данных? И вообще - привет, проблемы с точностью флоата. Магии тут, блять, нет, долб. Идешь на педивикию и выбираешь из деревьев и гридов по скорости обновления и скорости поиска. и вообще начиная от 10к я бы бахнул это в compute shader
Ой всё. Всё у меня будет, я не тороплюсь
>Если ты даже не можешь себе представить пределы изменения плотности по времени и координатам, как ты собрался выбрать структуру данных?
Например у к-мерного дерева нет проблем с плотностью, хули.
>И вообще - привет, проблемы с точностью флоата.
Лол. Очевидно что там где у меня начнутся проблемы с точностью флоата там начнутся проблемы у всех остальных. Нет, пример с геймобжектами исключает это.
>Идешь на педивикию и выбираешь из деревьев и гридов по скорости обновления и скорости поиска.
Я уже ходил и заимплементил и к-мерное дерево и октодерево. Но у них свои минусы. Вдруг я упустил чего? На педивикии нигде особо не консолидирована эта информация. Или я не нашел.
>и вообще начиная от 10к я бы бахнул это в compute shader
Я бы тоже. Но начиная от 10к все остальное что пользуется этими данными перестанет работать адекватно. Вообще compute shader не очень для этого подходит. Потому как сам процесс перемещения данных туда-сюда будет уже занимать много времени. К тому-же я не могу возвращать произвольные размеры массивов. Если для какого-то вектора понадобится вернуть 20 ближайших, а для других только 5, то это придется для всех вернуть 20 и убрать 15 для всех кроме одного.
> придется для всех вернуть 20
И? В этом нет никакой проблемы. Разумеется, массивы будут фиксированного размера, в твоем случае порядка 1Мб, что очень, очень мало. И кидать туда-сюда всего лишь 1 раз за кадр это ваще нихуя не нагрузка.
> Вдруг я упустил чего?
Накодь уже
ГРИД
Р
И
Д
И замеряй твою хуйню на всех трех алгоритмах.
а вообще, лучше бы пиздовал делать игру, или в /пр нахуй, это твое ебаное теоретизирование нахуй тут никому не сдалось
Хочу сделать карты и кампании, состоящие из набора карт, для своей игры, причём чтобы можно было класть в папку с игрой пользовательские карты и кампании. Импорт карт-то я реализовал, несложно, но как мне сделать "объединённые файлы" для кампании? Вот у близзардов были MPQ файлы, где прятали официальные кампании с картами, w3m файлы для карт (где все ресурсы ещё вложены), w3x для кампаний (и там все карты кампании лежат). Что мне, рар-архивы ебошить, что ли? Как взрослые дяди такую проблему решают?
> взрослые дяди такую проблему решают
Зипуют. Можешь расширение сменить с .zip на .kirill для солидности, но и это нахуй нинужно. Собственные форматы и заголовки выдумывать можно только если ты долбоеб близорт.
AssetBundle же. Все адекваты юзают эту тему.
https://docs.unity3d.com/ru/current/Manual/AssetBundlesIntro.html
Получается, он заточен на поиск пути на плоскости а не графе (даже при использовании поинт графа), оперирует координатами а не узлами (еще и в int3 формате) и не позволяет отфильтровывать узлы по условию
Попробую что нибудь попроще, просто граф с астаром
Господи, почитай уже нормальную статью. Астар - это алгоритм поиска в графе. Он настолько простой, что даже ты способен его накодить самостоятельно. а я накодил его раз 30 уже.
https://ru.wikipedia.org/wiki/A*
Чет хуево ты поковырял, там даже в примерах есть сцена с поиском пути по раскиданным по карте узлам.
Есть, но оно там нет фильтра узлов при поиске. Тупо по всем узлам ищет. И положения объекта описывается координатами int3 а не узлом, что смущает меня.
Какой тебе фильтр нужен? Что такое узел "положения объекта описывается координатами int3 а не узлом"? Ты до конца понимаешь что тебе нужно или выдумываешь всякую чушь лишь бы игру не делать?
>Какой тебе фильтр нужен?
найти путь из а в б при условии что все узлы на пути соответствуют условию х
Я мог бы переписать этот навороченный астар но он и так переусложнен - колбэки, потоки...
>лишь бы игру не делать
конечно
Там можно ставить на узлы теги, типа корабль ходит по узлам "вода" но не "земля", и расставлять эти теги можно через скрипт динамически. Но зачем что то объяснять человеку, который будет искать свой идеальный ассет до талого и в итоге отбросит свою охуительную идею игры так как технологический прогресс еще не дорос до его гениальных замыслов.
>Там можно ставить на узлы теги, типа корабль ходит по узлам "вода" но не "земля"
Не пойдет. У меня один и тот же узел доступен для союзников и недоступен для врагов. Нужен предикат типа Predicate<Province>
Алсо, моя игра опубликована и даже приносит денег на пиво
Ты заебал, ставишь на узел тег названия страны и на юнитов вешаешь разрешение ходить по узлам с тегами своей страны. Как ты игру сделал даже не представляю, спиздил у кого-то с гитхаба?
>https://docs.unity3d.com/ru/current/Manual/AssetBundlesIntro.html
To begin creating an AssetBundle (called AssetBundle in scripts and within the Unity Editor), select an asset from your project folder that you want to include in a bundle.
Т.е. для работы этой херни нужен юнити у пользователей + какие-то свои форматы выдумывать. У меня же по определению нужен формат, подходящий для кириллов с доступом только к текстовику.
>>498378
>>498385
Окей, погуглим.
https://assetstore.unity.com/packages/essentials/unity-anima2d-79840
Почему все сидят на Spine? Какие есть более годные альтернативы?
>Почему все сидят на Spine
Потому что enginedevs и у них другой движок
Anima2D для Unity и разницы в функционале нет особой.
До того как обновился до 2018 версии всё нормально было. Все скрипты, что были до обновления, видятся. Все новые - нет.
из личного использования Анимы2Д заметил проблему ,что теряется объект из карты спрайтов и начинает глючить . помогает толко пересоздание карты спрайтов и повторное анимирование в спине все разделено на отдельные спрайты и не глючит из за этого
И юнитистор и коллаборейт колбасит уже три недели, со времён всей этой хуйни с телеграмом. То работает, то не работает. Может два дня нормально отработать, а может и два часа. Но это не у всех провайдеров.
Приходится VPN поднимать, да.
как сделать кто знает
ссылку на игру по которой делаю анимацию https://www.comdotgame.com/play/kitchen-fun-2
>Puppet2D?
чес слово попытался из его урока чтото сделать послал его на хуй этот пупет и решил поебатся с АНИМОЙ и то в аниме хоть урок куда более простой сча пытаюсь анимировать это из нарезки игры если что знаешь то ответь как глаза заставить за мышкой двигатся но чтобы не проворачивались а просто двигались
задай центр между глазам и рассчитывай положение курсора относительно него и соответственно двигай глаза? LookAt не подойдет тут
>>498501
Ты где папет брал, на рутрекере нету же?
Я тупой, но тут redistribute значит нельзя типа мне самостоятельно распространять повторно какие-то элементы и части кода? просто я сначлао подумал, что нельзя типа изменения вносить в код, как правильно?
Я hide.me поставил. Шустрый, но ограничение 2 гига трафика в месяц.
>И? В этом нет никакой проблемы. Разумеется, массивы будут фиксированного размера, в твоем случае порядка 1Мб, что очень, очень мало. И кидать туда-сюда всего лишь 1 раз за кадр это ваще нихуя не нагрузка.
плюс сам массив векторов, плюс хуйня, плюс муйня. каждый фрейм это таскать на видеокарту тоже неочень. но наверно придется сделать и оставить как опцию, да.
>ГРИД
не, входные данные слишком подвержены кластеризации. нахуй.
>И замеряй твою хуйню на всех трех алгоритмах.
а я, кстати, замерил. если интересно то для небольшого количества векторов победило к-мерное дерево. для больших квадродерево.
хотя в моей имплементации к-мерное дерево получилось более адекватным решением.
вообще, квадродерево выигрывает по скорости составления дерева только если пользоваться пиздилионом листов. и хуй его знает сколько там листов понадобится. а если не знать то эти листы потом по всей памяти тонким слоем размажутся. подскажите хороших имплементаций квадратодерева.
>а вообще, лучше бы пиздовал делать игру, или в /пр нахуй, это твое ебаное теоретизирование нахуй тут никому не сдалось
а там уже им придется объяснять юнити-хуюнити. вообще чего ты? не одни же таскатели ассетов тут сидят!
>>498468>>498470
я бы лучше сделал свой граф с блудницами и игрищами и максимум что спиздил у астара это собственно сам а*. все таки сам поиск пути и графы-хуяфы очень малая часть самого астар. там охуеть сколько шелухи, а функционального кода не так и много. я читал.
>>498494
та-же хуйня. в итоге сижу на 2017
>>498500
лол какое ты говно мамонта откопал. а просто вычесть из координат мыши координату глаза, нормализовать и умножить на то как далеко глаз должен крутится не?
Как получать объект, заинстансенный из кода?
Вот например я в цикле спавню 10 префабов, у каждого имя "TileContainer(Clone)". А я еще хочу запихнуть в каждый по одному объекту. Как мне выбрать конкретный?
дык ведь конструктор обьекта возвращает тебе сам обьект. Object.Instantiate же ретурн тайп Object имеет.
Короче пока реализовал поиском по координатам (потому что их я знаю), но это какой-то аутизм.
Не увидел твой пост. Щас попробую, не подумал че-то. Все равно придется делать массив, но это все равно гораздо лучше.
>Что за габен? ты бы конкретней сказал пожалуйста
https://www.youtube.com/watch?v=walSolFRodw
>Все равно придется делать массив
Зависит от архитектуры твоего проекта. Вариантов хранения ссылок на инстансы - десятки!
zenmate.
Ну вот Сабнавтика, например, на юнити. Достаточно она серьёзна на твой взгляд?
>Как ты игру сделал даже не представляю, спиздил у кого-то с гитхаба?
Сам навелосипедил почти 17 loc
>ставишь на узел тег названия страны и на юнитов вешаешь разрешение ходить по узлам с тегами своей страны
Но это же хуйня. Стран может быть пара сотен, + союзники, по врагам тоже можно ходить. Куда проще было бы фильтровать узлы в нормальном предикате, а не сравнивать по каким то тегам с названиями
хотел бы с кем нибудь скооперироватся для совместной работы
Свои пожелания в совместной работе и фейкопочту пишите к этому коментарию
Но зачем?
заполняй двумерный массив, преобразуй в изображение. через bitmap например. обычно так обходят дорогой вызов SetPixel().
struct Pixel{
byte r;
byte g;
byte b;
}
массив както так
Pixel[,] ImageData = new Pixel[1600,900]();
создай имаж
закмени палитру. наидешь на перв стр гугла
Нахуй ты тред поднял, скотина?
Вы видите копию треда, сохраненную 16 марта 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.