Посоны, прохожу урок по юньке 2014 года. Юнька ругается на скипт и изменяет его. Пример: до rigidbody2D.velocity = new Vector2(move maxSpeed, rigidbody2D.velocity.y); после GetComponent<Rigidbody2D>().velocity = new Vector2(move maxSpeed, GetComponent<Rigidbody2D>().velocity.y);
Поясните что за хуйня происходит и где об этом почитать?
>>267443 Ранее многие компоненты были доступны по вшитым переменным для быстрого доступа. Сейчас эти переменные надо создавать самому, Rigidbody2D rigidbody2D = GetComponent<Rigidbody2D>(). Ну а вообще надо читать на что юнити ругается, ставлю анус что в консоли была написана суть проблемы и то, как ее решить.
Есть ГлавСкрипт с логикой, он там себе считает всякое. И тут хуяк он решает создать пару объектов на сцене. И при клике по этим объектам нужно сообщать ГлавСкрипту, что объекты кликнуты, короче в таргет взяты. Главскрипт должен знать что именно этот объект кликнут, а не другой. Как такое делается, с помощью системы событий? Может есть что попроще?
>>267444 Первая строка верна. Насчёт второй, у него юнити не ругается. В консоли ничего быть не должно, просто в редакторе кода выдаст предупреждение "ваш код морально устарел, хотите я его грейдану?". Если "да" - заменит rigidbody2D на GetComponent<Rigidbody2D>.
>>267443 Нагугли что такое геткомпонент. Очень важная хуйня, как мой трёхмесячный стаж подсказывает. Почему в уроке было просто ригидбоди тебе не обязательно знать, а вот что такое геткомпонент стоит поинтересоваться.
>>267428 (OP) Теперь понятно, почему юнити-любителей называют дебилами и всячески ссут на них. Они даже собственный тредн е могут нормально перекатить.
>>267108 Еще один вопрос - решил для своей турели запилить крутой ИИ с приоретизацией целей. Запилил, но возникла проблема - у меня есть 2 массива - GameObject[] Targets и GameObject[] BestTargetsType. В первом массиве тупо находятся все существующие объекты с тегом "HostleInfantry". Мне нужно чтобы скрипт находил в массиве GameObject[] Targets объекты с наименьшим здоровьем и вносил их в массив GameObject[] BestTargetsType. Собственно вопрос - как в юнити реализовать добавление объекта в массив GameObject[]? Сам скрипт: public string TargetPrimary = "HostleInfantry"; public enum TargetType{WEAKEST, STRONGEST, ANY}; public TargetType targetType = TargetType.WEAKEST;
GameObject[] GetWeakestTargets (GameObject[] Targets) { int i; for(i = 0; i < Targets.Length; i++) // поиск наименьшего значения Health { if (TargetHealth == 0) TargetHealth = Targets.GetComponent<UnitStats>().Health; // обращение к компоненту else if (TargetHealth > 0 && TargetHealth > Targets.GetComponent<UnitStats>().Health) TargetHealth = Targets.GetComponent<UnitStats>().Health; } if (i == Targets.Length) { for(int n = 0; n < Targets.Length; n++) { if (TargetHealth == Targets[n].GetComponent<UnitStats>().Health) { // вот здесь должно происходить добавление объектов из Targets в BestTargetsType }
Поcоны, нужно по клику брать объект в таргет. Пускай есть переменная NYAN_001, и содержит в себе кучу параметров. На ее основе создается на сцене игровой объект clone_001, кликнув на который нужно передавать в переменную Target ссылку на NYAN_001
Няш много, пусть они будут в массиве. Выходит нужно повесить на клона няши .AddListener с фунцкией таргетинга, верно? Но что писать в функции? Извлекать числовой индекс из названия клона и указывать в Target ссылку на элемент массива няш с тем же номером?
Может написано не понятно. Короче говоря, в скрипте есть перемненные с няшами внутри, благодаря которым можно делать с няшами что угодно, но не понятно как делать обратную связь. Чтоб каждый объект на сцене имел ссылку в на скрипт, породивший няшу.
Как сделать так, что бы 2D персонаж не застревал в других колайдерах при столкновении. Я немного гуглил, но так и не понял. Пишут про добавление какого-то материала к блокам. Разъясните.
>>267457 Конечно можно проще событий. Просто хуяришь тупой код, где твоя логика знает про каждую кнопку в твоем интерфейсе. Потом рыдаешь ночами от 500000 строк в классе логики, потом лечишься от депрессии, потом переписываешь всё на событиях.
>>267428 (OP) Чет так и не понял, корутины то сериализуются? Они будут продолжать работать после перезапуска? А то я уж чет костыль под это дело запилил, а потом подумал — а вдруг не нужно?
>>267836 Во-первых, не используй эдж коллайдеры. Если скорость у персонажа слишком высокая чтобы за один тик пройти сквозь ребро более чем на половину, то отталкивающая сила начинает действовать с другой стороны ребра, проталкивая обьект еще дальше внутрь. Во-вторых, тебе нужно вместо стандартного материала создать новый, и установить ему ненулевые значения фрикшн и боунс.
Но все равно это тебя не спасет от частных случаев, когда физика просто не срабатывает как нужно.
>>267944 Просто беру и прыгаю, суть в том, что он застревает, если я не допрыгну и попаду телом персонажа в стенку. Он как бы не сползает, а прилепает на место, особенно если давить на стрелку вперед, то он так и продолжет висеть. В этом вся проблема.
>>267945 Ясно, я неправильно понял твой изначальный вопрос. Я думал, что у тебя есть коллайдеры с которыми игрок должен сталкиваться, и коллайдеры с которыми нет. В твоём случае тебе нужно проверять коллизии снизу и со стороны "стенки". Если игрок сталкивается со стеной и не стоит на полу, добавляй ему вертикальной скорости, пока он не достигнет пола, и потом обнуляй её.
Почему мой игровой объект пробивает (нерегулярно) стену/пол, сделанные из эдж коллайдера? Эдж коллайдер не годится для таких задач? Полигоном ебашить? Речь о 2Д.
>>267968 Не годится. У эжд коллайдера нет плотности. Это просто ребра, которые отталкивают другой коллайдер от себя в одну из друх полуплоскостей, на которые он делит пространство. Полигон или примитив, как бы наполнены изнутри виртуальной "материей", поэтому из них все выталкивается наружу, и не застревает внутри. Еще нужно у персонажа сменить тип регистрации столкновений на континуус.
>>268416 Не обязательно таким, любым, суть - есть два клона, при клике нужно определить кто из них кто, и установить значение в таргет. Но я хз как это реализовать. Сам объект созданный инстантиейтом не несет какой-либю информации.
>>268411 Бля, рейкастом получаешь геймобжект, потом сравниваешь его с нужной переменной. Если совпадение - это один объект, если не совпадение - другой. Хуле тут думать-то?
>>268523 Как я могу сравнивать? По названию? А если объектов в массиве тысяча, а на сцене отображается 50, и их хуйнули сплешем, перебирать 50к элементов чтоб немногим отнять по 10 хп? Ну ок, а могут быть другие способы? Как-то в игровой объект вшить ссылку на породившую его сущность? Пытаюсь гуглить, выдает всякие синглтоны, IoC контейнеры, сложно, не могу разобраться.
Хочу запилить текстовую игрушку под андроид, что то вроде симулятора квестгивера из таверны Знаю немного джаваскрипт, туда ли я зашел? Я смогу для этого Unity использовать?
>>268526 Тогда вешай скрипт на сам объект. И делай проверку из него: сначала если в кадре, потом если в зоне действия, потом хуйнуть 10 хп. Тогда не придется перебирать все 50к.
Привет Аноны, надеюсь тут есть прошаренные, нашел вроде удобный инструмент, называется RAIN AI, есть ли по нему туторы или готовые ветки поведения? Очень нужно, анончик, не подведи.
Анонс, у вас есть на примете какие-нибудь видео, где рандомные люди пишут на c# topdown-что-либо на манер диаблы? Хочу подобных видео, где можно просто посмотреть как люди кодят разные аспекты таких игор. Желательно со звуком и комментариями, но не обязательно именно туториал с разжёвыванием. С меня как всегда.
А чего такие уроки всратые на их сайте? Не могу найти внятного урока про управление персонажем от первого лица, нашел там в онлайн уроках, но он просто перетащил ассеты, без рассмотрения самого скрипта управления камерой и движением.
>>268860 Есть более насущные вещи, которые нужно объяснять. Не как переместить обьект в пространстве, а по каким принципам происходит перемещение, например. И с этим доки на сайте справляются хорошо. Тем более что весь код в ассетх прокомментирован, по компонентам есть справка.
>>268872 Тем не менее в уроках поясняют как сделать базовые вещи, но конкретно про управление от первого лица там нет. Хотя казалось бы, самый частый вопрос.
>>268877 Из тех что я смотрел - отличительная черта была как раз в том, что рассказывают о принципах опуская ненужные детали. Наверное тебе стоит сначала просто посмотреть больше "базовых".
>>268877 Ты хочешь знать, как устроено управление от первого лица? На кватернионах - повороты в четырехмерном пространстве. Если тебе это ни о чем не говорит, то просто бери ассет и вселупую пользуйся/разбирайся. Юнити - это красивая и простая свиду обертка вокруг линейной алгебры. Ты либо ассетотаскатель-любитель, либо начинаешь относиться к геймдеву как к сириус-бизнесу и дрочишь матешу
>>269113 Не тормознутый, если умеешь программировать и понимаешь компьютерную графику. Сам по себе движок оптимизирован, но нужно всегда понимать, что ты делаешь.
Антуаны, у меня вопрос Вот, при нажатии появляется круг и из центра к курсору идет стрелка. Стрелка, а точнее пока что линия, сейчас рисуется с помощью line renderer, но как видно из пикрелейтеда (линия нарисованная черным), в таком случае, линия при выведении курсора за круг тоже выходит за круг. Надо сделать так, чтобы длина линии ограничивалась радиусом круга, но в этом line renderer нету такого параметра как длина линии. Что посоветуете?
>>269104 Спасибо >Напомню что за производство порнографии тебе грозит сгуха, если в твоих кубах опознают имитацию школьницы то пойдешь по ЦП-статье. Удачи. Я не в рашке, славо богу. и не в хохляндии. это для тех у кого рефлекс сработет
>>269221 Лол, ты вообще понимаешь о чем речь идет? Я не спрашивал, как определить угол под которым рисуется линия. Я спросил, как ограничить длину линии, которая рисуется line renderer.
>>269233 Вы че, блять, тралируете меня, суки? Element 0 - координаты клика Element 1 - позиция курсора Из элемента 0 в элемент 1 строится линия, я это понимаю. Вопрос в том, что я хочу ограничить длину этой линии определенным значением, то есть человек курсор дальше отводит, а линия не удлиняется, но если он изменяет угловое положение курсора относительно центра круга, то линия фиксированной длины соответственно поворачивается. Однако, в пределах круга, длина линии изменяется соответственно расстоянию от центра до курсора.
>>269236 Ну считай длину своей линии, и если она больше радиуса круга, считай точку пересечения этой линии с окружностью и веди линию туда. Могу формулами написать, но я никогда не работал с юнити и, возможно, там можно все проще сделать.
Кириллач, у меня не работают кнопки на триде-гуе. Что камерой их нажимаю, что курсором мыши - один хуй пизда, не срабатывают. Раз в три-четыре запуска они срабатывают, если нажимается та Select Button, но прицнип работы этого дрянья я так и не уловил. Гениальная идея - пульты уровня quake 4, чтобы подошел и активировал одну из нескольких кнопок. В то же время кнопки на привязанном к камере гуе работают адекватно. На юнитиответах уже джве недели нихуя не отвечают.
>>269585 Ну хорошо, а как тогда по-пацански сделать такую дымку? Полупрозрачных спрайтов штук пять поставить? Это для дваде сойдет, а в триде будет печально выглядеть.
>>269625 Ну вот типа перед игроком очень важная и самокритичная лужа с водяной дымкой над ней. Я отхожу - дымки вокруг меня нет. Захожу в лужу и перестаю видеть что-то, кроме тумана и воды. Ты мне предлагаешь в лужу не заходить?
Кириллы, в unity есть ненаправленные мягкие источники света, чтобы как будто светится само пространство? Это реализуется каким-нибудь translucent шейдером? Хочу сделать уровень, в котором нет солнца и фонариков, но свет идет сверху и со сторон, только нижняя часть предметов не освещена.
>>269637 >изнутри то понятно. Ну так добавляешь проход шейдеру, который будет рисовать изнутри и вуаля. Я бы ещё пару мешей "облачков" добавил для динамики.
Аноны, как приделать к модели Fx? Есть Меш модель, приаттачиваю к ней FX огня (горящие глаза), но он не отрисовывается нормально, как будто на заднем фоне за моделью, хотя в сцене все расставил нормально.
- этот код из тутора про юфо, с сайта юнити, я переписал его почти дословно, уже в сто раз, а мне юнити ошибку выдает, пишет что скрипт с ошибкой. Я так понимаю, что они что-то очень сильно поменяли, поэтому старые туторы неакутальны?. В общем, подскажите, кто тут с головой есть?
>>269950 Кстати вопрос, как лучше записывать - вот так: rb2d = GetComponent<Rigidbody2D> (); rb2d.AddForce (movement); или вот так: GetComponent<Rigidbody2D> ().AddForce (movement); Второй вариант записи мне нравится больше(люблю когда все в одном месте) но будет ли такая запись влиять на производительность?
У меня есть самописный курсор в 2д. Как мне сделать, чтобы он не нажимал ничего за пределами своего меню? Попробовал ограничить его пространство колайдерами-тригерами с тегом + скрипт, почему-то не работает.
Как сделать, чтобы некое анимированное движение не прекращалось резко, после выхода из тригера (т.е. выключения скрипта, отвечающего за движение) ? Тут елда не подойдёт. Потому что нужно, чтобы не было возможности делать новые движения, за пределами тригера, сразу же. А с елдой их делать можно.
>>270085 Элементарно. Ты не ставишь скорость в лоб, ты ставишь желаемую скорость. И меняешь скорость с определенным ускорением. Это дает плавный разгон, плавное ускорение и все дела.
>>270065 Если правильно понял, то можешь добавлять прозрачную UI панель на весь экран, но позади этого меню типа как модальный диалог и тогда рейкасты на клик не будут проходить через эту панель.
>>270524 Иногда хватает поразмыслить минутку, и понять, что перебор всех объектов занимает больше времени, чем перебор только детей. И что перебор всех объектов каждую секунду вместо одного раза свирепо снижает производительность. Для всего остального есть документация и пошаговые руководства на ютубе или блоги разработчиков. Вот этот дядя очень подробно рассказывает с графиками и формулами для новичков: https://www.youtube.com/user/Cercopithecan/videos
Кстати может кто-нибудь пояснить в чем разница между GetComponent<AudioSource>().enabled = true; И GetComponentInParent<AudioSource>().enabled = true; Влияет ли это как-то на производительность? Как лучше записывать и почему?
>>270650 Если прочитать названия методов, то путем тривиальных размышлений можно придти к выводу, что GetComponent возвращает компонент повешенный на текущий gameobject, а GetComponentInParent - с его родителя. Это 2 разных метода и сравнение между ними по производительности тут странно выглядит. Выше уже поясняли, что если приходится это вызывать каждый кадр, то лучше закешировать компонент.
> Как лучше Лучше для начала сделать хотя бы прототип игры, а потом уже заниматься байтоебством.
Ананас, у меня есть локация примерно в два квадратных километра, по которой рандомно бродит штук сто мобов разных видов и размеров. Когда я начинаю из края карты поворачивать камеру в центр, юнитач начинает лагать как сука, хотя я в двухста метрах от игрока отключаю рендерер. Видимо, это просто из-за попадания объектов во фруструм?
Делаю персонажей в максе и даю им стандартный Biped скелет. Почему он, сука, такой из себя уебанский и с локальными координатами? Даже ссаная голова на LookAt и PointAt пидорасится по-жесткому. Процедурно кости поворачивать так вообще пиздец, приходится писать костыли. Как отойти от этого?
>>270671 >такой из себя уебанский и с локальными координатами? Это потому, что голова - дочерний объект. Скорее всего, шеи. У всех скелетов такое. Ты можешь вручную убрать эту привязку в максе, если совсем долбоёб. Можешь в юнити сделать пустышку и колдовать с ней. А лучше смириться и работать с локальными координатами, не так уж сложно.
>>270662 >отключаю рендерер А ты отключай весь ГО и сравни. Отключенные ГО не попадают на этап кулинга, потому лучше так. Ну и скрипты на этой твоей дрисне работать перестанут, тоже экономия.
>>270677 >Алсо, модели еще поворачиваются. Так это у тебя проблема с ориентацией пивотов, экспортируй Y-up. А детачить голову тебе не надо, всё равно придётся возвращать, как было. А если всё-таки хочешь, то найди кнопочку unlink selection, сломанное звено цепи. И отлинкуй.
>>270691 Ок, вот смотри, хочется сделать рейнджеро-подобный мир, понять как оно устроено. Сначала нужно написать абстрактную логику, а потом ее визуализировать, верно? Ну вот, начал с малого, написал класс Ship, и класс Weapon, объект класса Ship имеет поле Weapon. Вот сюда вставляется пушка. Теперь сами пушки, был сделан абстрактный класс Weapon с абстрактным методом Fire(), от него два наследника, AOE и direct, а как в них сделать разное поведение? Как сделать, что вызов fire() раздавал пиздюлей всем вокруг с помощью аое пушки? Скрипт в котором создается массив кораблей висит на пустом Геймобьекте, и я хз как оттуда получить данные кроме как влепить массив кораблей в статический класс.
>>270701 Переопределяй метод Fire в нужном классе и в нем прописывай логику для каждого из видов оружия. public override void Fire() { //Раздать пиздюли }
>>270704 >Ты можешь с геймобжекта стащить скрипт и из него список кораблев, в чем трабл то? Как на скрине? Если так, то мне блядь аж стыдно ибо это просто. Ничего страшного если в мейн дохуя всего будет написано?
Посаны, пилю дженерик шутан. Собственно, проблемы джве 1) Регдолл. Есть заготовка персонажа, на ней висит скрипт управления (методы WalkForward, Jump) и все такое, ригидбоди, Capsule Collider и скелет с аниматором. На каждой кости персонажа повешены джойнты и ригидбоди из стандартного регдолла. В скрипте управления есть метод Hit, в котором отнимается хп, в апдейте проверяется хп, и как только оно падает ниже нуля, основной коллайдер с ригидбоди отключаются и включаются ригидбоди на костях. Это, конечно, охуенно, но как реализовать отдачу от выстрелов, чтобы трупы по карте катались? Мертвые уже катаются, а живые просто оседают на пол. Рейкасты упираются в ригидбоди персонажа, а физические пули не нужны. 2) Частично вытекает из первого, это хитбоксы - хочу, чтобы выстрелы в голову наносили тройной, например, урон, или же сразу убивали.
По гениальной архитектуре у оружия есть метод Fire, который в случае обнаружения рейкстом npc вызывает у него метод hit
>>270709 Пушка в данный момент стоит у игрока, а игрок отдельный хуй, нужно при fire() отловить тех кто рядом, чтоб отвешать им положенное, visibleShips это корабли в системе, которые должны показываться на игровой сцене.
>>270714 Тогда передай игроку gameobject на котором висит список,через public GameObject, и внутри скрипта игрока получи из него список через GetComponent<имя скрипта_со_Списком>().visibleShips
>>270722 Ошибка будет если ты в этом же классе создашь переменную с именем этого же класса. Но подразумевалось, что мы получаем скрипт моча из другого скрипта. Мне сложно представить, что кто-то будет искать на сцене скрипт из этого же скрипта.
Юнитач, я получаю с клавиатуры вектор if (CrossPlatformInputManager.GetButton("Forward")) forward = 1; else forward = 0; if (CrossPlatformInputManager.GetButton("Backward")) backward = 1; else backward = 0; if (CrossPlatformInputManager.GetButton("Strafe Left")) left = 1; else left = 0; if (CrossPlatformInputManager.GetButton("Strafe Right")) right = 1; else right = 0; float v = forward - backward; float h = right - left; move = new Vector3(h, 0, v);
Затем move = move.x transform.right + move.z transform.forward;
Затем move я двигаю Rigidbody персонажа через Rigidbody.velocity. Все двигается верно. Затем я пишу такой код. if (move.x < 0) { animator.SetInteger("direction", 4); } else if (move.x > 0) { animator.SetInteger("direction", 3); } if (move.z < 0) { animator.SetInteger("direction", 2); } else if (move.z > 0) { animator.SetInteger("direction", 1); }
Но анимация проигрывается почему-то только для последнего случая. Что могло пойти не так?
Показалось что понял, но вот присел в кресло, и теперь понял что ничего не понял. Помогите пожалуйста, я слишком тупой или что-то упустил. Умоляю, просто напишите чтоб оно работало. Интересует сама концепция
>>270802 Чтоб пушки стреляли, отнимали ХП у Ship'ов из списка visibleShips, аое пушка должна нанести урон всем( будем считать что корабли тусуются рядом), директ пушка по таргету. Ведь реализация самих пушек должна быть прописана в методах FireUp(),верно? Вот на этом месте рвусь.
Помогите с архитектурой, аноны. Хочу сделать несколько видов оружия в инвентаре, инвентарь уже есть, но у меня все эти тыкалки просто висят на ГО в ладони персонажа и отключаются при скролле или изменении из инвентаря. Я планировал количество оружия увеличить, поэтому настраивать каждый предмет как-то глупо. Как лучше сделать? Наделать префабов? Их тоже надо будет подключить в редакторе.
Аноны снова я, у меня есть код. using UnityEngine;
public class CameraController : MonoBehaviour { void FixedUpdate() { Vector3 fwd = transform.TransformDirection(Vector3.forward); Debug.DrawRay(transform.position, fwd); if (Physics.Raycast(transform.position, fwd, 10)) Debug.Log("There is something in front of the object!"); } }
>>270884 Ray fwd = new Ray(transform.position, -1f * transform.forward); if (Physics.Raycast(fwd, out hit, 1000f)) { if (hit.collider) { if (hit.transform.gameObject.tag.Equals("NPC")) { hit.transform.GetComponent<Human>().Hit(damage);
>>270896 Так я юнити знаю впринципе. Представляю что она может и ее сущности. Логические цепочки по созданию скриптов я могу делать а вот выразить их в коде уже не могу. Мне вот надо диалоги писать, а как прикрутить базы данных к юнити не ебу вообще, школьные ютубы сразу идут нахуй, нужна спец литература.
>>270898 >Мне вот надо диалоги писать, а как прикрутить базы данных к юнити не ебу вообще, школьные ютубы сразу идут нахуй, нужна спец литература. Да что там блядь делать? Вешаешь на персонажа или на камеру скрипт с диалогами. Тыкаешь рейкастом туда где хочешь вызвать диалог, после чего выводишь гуй. Ебать же сложно.
>>270900 И нужно передавать еще вектор луча, чтобы им ебнуть по ригидбоди. Только вот в отключенном состоянии ригидбоди не получают скорость, а при переключении её сбрасывают. Это костыли ебаные.
Кириллы, хочу сделать так, чтобы список вещей в игре загружался из файла, чтобы можно было в блокноте хуйнуть пару тегов, перезапустить игру и предметом уже можно было пользоваться. Внутрення имплементация любого предмета - дело десятое, а как мне именно считывать из файла и заполнять массив, скажем ItemsBase? Ведь есть же несколько типов предметов - одежда, еда, спички какие-нибудь. Сделать абстрактный Item и наследовать от него штук пять классов? А как это считывать? Мне кажется, что я это понимаю, но не могу уловить.
>>270797 У Weapon метод выстрела заменяшь на FireUp(Ship target). В случае с директом понятна логика метода, а с аое пушкой - считаешь Physics.SphereCastAll или чем то своим что его окружает по его координатам.
>>270992 Ага, вроде разобрался, создал класс WeaponInfo, с таргетом и массивом кораблей внутри, скармливаю в метод, а там каждая пушка разгребает нужное себе. Пиздец, так легко, а голову ломал пару дней.
Ну вот правда же плохо уроки сделаны. Я имею проблемы с основами основ, решил сделать управление от первого лица, и приходится на каждом этапе ломать гугл, хотя казалось бы, вопросы у меня возникают такие, какие и должны возникать, это все можно было бы уместить в один урок, но такого нет.
>>271014 Создаем папку с проджектайлами, туда кидаем все имеющиеся у нас прождектайлы со создаем скрипт допустим projectile, в скрипте присваиваем прождектайлам дальность, урон, время жизни и т.д. Потом создаем скрипт weapon - оружие нашего корабля, который и будет создавать прождектайл. Раскидываем корабликами теги(торговец, воин, пират и т.д.) например "раса_торговец". Пишем скрипт поведения чтобы пират нападал на торговцев, торговцы летали с планеты и планету. Кораблики-цели можно искать с помощью Targets = GameObject.FindGameObjectsWithTag("тэг") - получаем список всех кораблей с этим тегом на сцене, потом пишем саму логику. С планетами - аналогично.
>>271017 Ага, вроде понятно, но по душе свой вариант. С конструкторами-хуюкторами понятно из уроков С#, а вот всякие ко-ко-компоненты не очень. Сдается что компоненты больше подходят для статического мира, нежили почти полностью динамического, так ли это?
>>271021 >Сдается что компоненты больше подходят для статического мира, нежили почти полностью динамического, так ли это? И так и так можно. Просто, ИМХО, описанным мною способом логику писать будет намного проще, ну и дебажить тоже будет попроще.
На самом деле компоненты это очень просто и удобно, главное не вызывать их каждый кадр. GetComponent<BoxCollider>().enabled = true; - вызов компонента BoxCollider и его включение из текущего объекта. имя_объекта.GetComponent<BoxCollider>().enabled = true; - вызов компонента BoxCollider и его включение у другого объекта. Если другой объект мы получаем через рейкаст то записываем вот так: имя_рейскаста.transform.GetComponent<BoxCollider>().enabled = true; GetComponentInChildren - вызов компонента объекта и его детей. GetComponentInParent - вызов компонента материнского объекта.
>>271021 > компоненты не очень Это такая же парадигма как и твоя камасутра с ООП, используемая в редакторе юнити. И весь апи юнити заточен на то, что ты будешь использовать именно компонентную модель. Одно наследование от MonoBehaviour предотвращает тебя от тысячи тривиальных велосипедов и экономит тучу времени. Стоит все таки посмотреть хотя бы один из туториалов на сайте, чтобы появилось представление как выглядит и что из себя представляет геймдевелопинг на этом движке.
У меня тут проблема возникла. У меня создаются линии с такими параметрами.
line = new GameObject("line").AddComponent<LineRenderer>(); line.material = new Material(Shader.Find("Particles/Additive")); line.SetVertexCount(2); line.SetWidth(0.16f,0.16f); line.SetColors(Color.red, Color.red); line.useWorldSpace = true;
И в самой юнити это выглядит как на первом пике, с красными линиями. А когда я пытаюсь затестить на андроиде, то все становится как на втором, в виде розовых толстых линий. Как исправить? Почему так?
>>270902 Тебе нечего, а я не хочу просто выдирать куски кода из вики, пытаться сшить их вместе и думать, почему в очередной раз вылезла ошибка. Вот я например работал с кодом вчера, лучом тыкаю в коллайдер, дебаг молчит, думаю что за херня. Оказалось, что луч из днища модели выходит а коллайдер над землей висит. Я к тому, что хочу до конца понять как и что работает в коде, какие у меня именно возможности программирования
Антуан, есть проблема с 2д физикой. У меня в сцене есть ригидбоди объекты, которые нужно вращать с постоянной скоростью. Я для этой хуйни написал скрипт где при старте задаю угловое вращение и ставлю флаг "кинематик". Замечательно все работает. Но! Когда я дошел до оптимизона, выяснилось, что такие ригидбоди не хотят засыпать и симулируются постоянно, регистрируют коллизии и прочая. Я тогда написал еще один скрипт, который эти ригидбоди убирает из симуляции, если они вне пределов видимости. Сэкономил кучу ресурсов, все дела. Но есть один момент, который я никак не могу обмозговать. Когда ригидбоди убирается из симуляции, а потом снова добавляется, то все физические свойства (конкретно меня интересует угловое вращение) сбрасываются.
Подскажи, антош, как мне организовать код, чтобы после активации ригидбоди он сохранял свои физические свойства.
>>271041 Это не для игр, это для того чтобы можно было быстро и удобно расставлять объекты на сцене по сетке, а не ебаться каждый раз с выставлением координат для каждого объекта вручную или скейлингом объекта или их фиксацией вручную. Плагин короче.
>>271133 Дело не в угле, а во вращательном движении, которое прекращается после деактивации и не продолжается после повторной активации. Но даже если бы все было так, то что делать с объектами, у которых другие свойства, которые нужно сохранить? Не писать же для каждого вида по скрипту.
>>271134 Я тебя понял. Глянь ригидбоди в апи, может и можно как-нибудь записать угловое вращение. >Но даже если бы все было так, то что делать с объектами, у которых другие свойства, которые нужно сохранить? Не писать же для каждого вида по скрипту. Если видов объектов много то легче создать универсальный скрипт и уже в нем либо ручками, либо автоматически(например по тегу) выставлять что именно сохранять.
>>271139 Зачем получать доступ к событию? Нужно получать доступ к переменным. То к чему нужно получить доступ делаем public, для красивости можно то что ты не будешь менять в инспекторе скрыть с помощью [HideInInspector] После чего можно легко получить доступ с помощью GetComponent<ТвойСкрипт>().переменная = что-то;
>>271141 Затем, чтобы не писать еще функцию, я присвоения переменных, которых может быть больше одной и в разных случаях они могут быть разные. А так получается универсальный метод доступа к функциям в событии для всех объектов.
>>271142 Спасибо. К стати у меня с этим связан один непонятный момент. Я, например, пишу функцию, делаю ее public static, но когда пытаюсь получить к ней доступ через компонент button, она у меня в списке доступных функций не появляется. Точнее появляется, но не сразу. Какими то кривыми путями в общем.
Посоны, короче что лучше, хранить корабли в массиве или списке? Дело в том что каждому созданному кораблю присваивается id, который будет соответствовать индексу массива, и поэтому зная id можно напрямую обращаться к элементу. В списке же нужно перебирать. Массив кажется более привлекательным. Что скажете, какие подводные камни?
>>271239 >Дело в том что каждому созданному кораблю присваивается id Зачем? Родина тебе объекты дала, используй прямые ссылки на элементы списка и не надо ничего перебирать.
Ты вообще туда зашёл? Мы тут на C# программируем, а не на С.
Знающий анон, только здесь и только сейчас у тебя есть уникальный шанс ответить на самый главный вопрос Вселенной: то ли я - криворукий Кирилл, дурак, то ли что-то с Юнити не так. 1. Есть 2D платформер как необычно. Когда игрок выполняет определённую последовательность действий, объект перемещается от своей изначальной позиции до выхода из уровня. Поскольку объект этот движется по сложной траектории прыгает по платформам и к тому же по ходу пьесы выполняет самые разные движения ходьба, прыжки, отряхивание и прочее, реализовал через один animation clip. И вот тут перехожу к главному. Когда запускаешь этот клип через превью play в окошке animation, выглядит аки лучший блокбастер. Когда клип запускается непосредственно в игре, всё выглядит как говно: объект рандомно скачет вверх-вниз и слегка проваливается в пол после прыжков. Лезу опять в animation. Просматриваю клип по каждой ключевой точке - всё с точностью до пикселя. Там же смотрю кривую - аналогично, на каждом временном отрезке даже там, где нет ключевых кадров положение объекта идеальное. Отсюда очевидный вопрос, как пофиксить? 2. В том же проекте есть несколько объектов, падающих после столкновения с игроком. Реализовал через изменение в Rigidbody2D Gravity Scale с 0 до 1. С тем злополучным объектом из п. 1 не проканало. После того как срабатывает триггер, объект продолжает висеть в той же точке триггер срабатывает, поскольку запускается нужный в этом случае клип анимации. Пофиксил, изменив Transform Position через анимацию. Насколько понял, законы физики юнити перестают действовать, если хотя бы в 1 клипе анимации, привязанном к этому объекту, меняется Position. В моём случае не критично - не больше 10 простейших клипов в относительно маленьком уровне, поэтому положение объекта определить легко. Что делать, если клипов станет 100, уровень огромен и определить положение объекта невозможно?
>>271246 Ну давай разберем по частям, тобою написанное )) Складывается впечатление что ты реально контуженный, обиженный жизнью аниматор )) Могу тебе и в глаза сказать, готов приехать послушать? ) Вся та хуйня тобою сделанное это простое кирильство, кармак ты комнатный) ) от того что ты много наанимировал, жизнь твоя лучше не станет) ) пиздеть не скрипты ворочить, много вас таких по весне оттаяло )) Про таких как ты говорят: Мама не хотела, папа не старался) Вникай в моё послание тебе< постарайся проанализировать и сделать выводы для себя)
>>271263 Всё это очень мило, но по делу есть что сказать? Ты предлагаешь полностью игнорировать анимацию и всё пилить скриптами? Кат-сцены через поиск пути? Давай пропустим часть про еблю мамок, а сразу перейдём к сути вопроса.
>>271277 Смешивать и не получается. >После того как срабатывает триггер, объект продолжает висеть в той же точке Предложи свой вариант, как сделать кат-сцену с физическим объектом.
>>271024 >>271025 Бро, ничего не имею против компонентов, ни в коем случае не спорю, а просто хочу понять. Звездную карту сделал, заебись, гиперпрыжки, минимапа, генерация солнечной системы. Но это все элементарное, и по большому счету статическое. Хочется сделать простой, но динамический, невидимый мир, развивающийся на основе накопленных за игру данных. Вот, поэтому ебусь с ООП, и нихуя не понимаю, Да, без монобеха отсос с причмокиванеем, не могу заинстанциировать лазерный луч при выстреле пушки, не могу дестрйонуть объект, но с монобехом не могу использовать конструктор. Умные дядьки в видосах гвоорят о всяких паттернах, инверсии управления, отделения данных, а мне бы просто понять на простом примере. Или без опыта хуйца? Вот в данный момент нужно создать лазерный луч, и возможно взорвать. Можно в методе Fire() возвращать какие-то данные в менеджер, делать там проверку и уже делать нужное, но не хуйня ли получится? Короче хули делать? Может забить хуец? У меня грибы есть.
>>271386 Ну лучи/лезеры/линии и т.д. это line renderer(моноцвет) и trail renderer(если нужен какой-нибудь хитровыебанный луч). Ты вообще можешь нормально объяснить что ты хочешь сделать?
>>271239 Используй словари https://msdn.microsoft.com/en-us/library/xfhwa508.aspx , а в качестве ключа используй id корабля. Тогда при доступе по ключу сможешь получить один из всех своих 6 кораблей за константное время сэкономив время процессора стремящиеся к нулю.
>>271577 Тогда, наверное, у тебя проблема вроде моей >>271246 Попробуй запилить простейшее движение через скрипт даже без анимации, только меканим убери.
>>271854 Для морфинга тебе нужно, чтобы количество вершин и полигонов совпадало. Закидываешь в макс обе модели, кидаешь модификатор морфер и потом в юнити крутишь блендшейпы.
>>271562 Так за блеск и прочее отвечают не рейкасты, а материалы. Создавай новый материал и объединяй его со своими пулями. Чтобы ингейм были видны рейкасты нужно использовать либо line renderer, либо trail renderer. Как писал другой анон выше.
>>272167 Спасибо тебе, анон. Я, конечно, борзею, но можно ли сделать автоматический бордерлесс скейл на весь экран? А то как-то не хочется для 2д пиксельговна делать кнопку настроек онли ради изменения разрешения. То есть я не хочу делать меню, так как у меня есть пездатая идея
Блядь, вот почему 90% разрабов не ставят эту галку? Ну вот неужели это так сложно? Ведь общеизвестный факт что юнити очень неохотно сворачивается и разворачивается. Я лично считаю что она вообще должна стоять по умолчанию. Если понадобится то всегда можно снять.
>>272193 Если ты будешь резайзить окно, то может поломаться гуй , надо проверить фов, мало ли что. Подозреваю, что если во время драг-н-дропа ресайзить, то всё сломается. Нахуй надо. А ролик скипнуть проще.
>>272194 ФОВ апдейтится в реальном времени, гуй тоже. Драг-н-дроп это банальная либо привязка меша/спрайта к курсору, либо смена курсора на перетаскиваемый объект. Там нечему ломаться. >>272195 Зависнуть может, или вообще отказаться сворачиваться.
>>272196 >ФОВ апдейтится в реальном времени И получаем какой-нибудь фишай. Нельзя фов трогать. > гуй тоже У родительского элемента якоря по углам экрана, а у дочернего в центре родителя. Нельзя гуй ресайзить; лепим анкоры родителя в точку и всё, пизда - сделал маленькое окно и всё занято гуем. Ещё и не влезло. А ублюдки с ретиной смотрят через лупу на твой гуй. >Драг-н-дроп это Это перемещение спрайта в экранных координатах. Нельзя менять координаты, нельзя ресайзить экран.
>>272159 То есть на каждый рейкаст мне нужно создавать геймобджект? > line renderer, либо trail rendere навешиваются на ГО, так в документации написано
>>272282 Я нихуя не понял, честно. Ты вообще можешь нормально объяснить что ты хочешь сделать? Тебе, как я понял, нужно чтобы пули блестели - ну так создавай новый материал, настраивай его и вешай на свои пули. При чем здесь вообще рейкасты? Что ты там за адовый велосипед городишь?
>>272304 А это точно швы на текстуре? Тогда открой 3Д редактор и зарисуй в режиме рисования текстуры по модели. А если это кривые нормали, то открой 3Д редактор и заюзай исправление нормалей. Пиздец вопрос.
Аноний, хочу запилить в свою йобу ландшафт, но встроенный не хочу использовать по понятным причинам он говно. Есть ли какой софт, чтобы можно было удобно руками замоделить красивый ландшафт, а потом экспортировать и порезать на чанки? Мультитекстуры и прочая йоба мне не особо нужны, думаю смогу даже вертексными цветами обойтись.
>>272314 worldMachine + ремешинг в Meshlab у встроенного ландскейпа есть пиксель эррор, это по типу ЛОДов, чтобы не рисовать дальние ебеня, а с мешем такое не получится зделоть
>>272310 1. стандартная развертка головы, один шов лишний, остальные вопросы к создателям туторов. 2. офк сведены, да и будь это не так то вряд ли бы дублирование вертексов пролегало идеально вдоль симсов развертки. 3. не нашел в хНормалзе 3.19.2 этой опции, сам какую юсаешь? 4. проблему решил танцами с бубном, в чем она заключалась пока хз ибо пикрелайтед запекал месяц назад.
>>272332 1. штудирй другие туторы, этот какой-то неканоничный. скачай да погляди модельки из АААшек, у них голову в два чанка делают плюс ухи ухи ухи 2. скачанные модельки часто под плейстейшон, а эти ребята обожают разрезать на части, ПРОИЗВОДИТЕЛЬНОСТЬ 3. вот же 4. есть варик что в юнитях у тебя Tangents: Recalculate и/или Normals: Recalculate, а должно быть Import. Ну или наоборот, не должно быть. макс пиздануто всё делает в этом плане.
>>272317 Нет иди нахуй Мне не нужны миллионы дк на мобилках, которые юнити террейн обеспечивает без проблем при наличии вообще любой растительности
>>272320 Чому нет? При загрузке игры берем вертексы каждого чанка и генерируем новый меш низкого разрешения, тупо проходясь по каждому второму/четвертому/n-вертексу. На определенной дистанции переключаем и вуаля. Импровизированный лод из говна и палок, без затрат места на заранее сделанные лод меши готов. Нестыковки решаются просто размером чанка, а у меня он достаточен для того, чтобы их не видно было. А, ну и разрешение чанка должно быть кратным n, но это не такая уж и проблема.
Конечно это не идеально, но дает куда больше производительности, чем встроенный террейн. Йоба фичи вроде самогенерирующихся билбордов не нужны, ибо один хуй жрут больше, чем сбатченные деревья в моем конкретном случае.
>>272342 Есть какой-то там эвент систем, но он вроде как для гуя и всяких OnPointerClick, хотя не ручаюсь за достоверность данной инфы. Сам не пользовался.
>>272343 Пиздец, вас там, таких долбоёбов, специально выращивают? Кто-то когда-то пизданул, что у террейна много ДК, а почему так никто и не понял. Бери дефолтный террейн. Ты в любом случае сделаешь хуже. p.s Террейн, полностью засеянный травой, дистанция отрисовки трав максимальная, трава - анимированный меш на 3 триса. Итого 19 дк. Раза в три меньше, чем на одного ГГ.
>>272337 1. да видал, ну для моей игори не принципиально (вид сверху) 2. моделька моя офк, че я совсем штоле 3. спс. кстати что касается хНормала, то его основная проблема на мой взгляд в том, что он отказывется кушать некоторые хайполи которые по его мнению содержат N-sided полигонс, хотя на первый взгляд там только треугольники да квадраты (в таком случае спасает интернал блендер бейк) не переделывать жеж слепленую в зебре хайполи. 4. там все норм, юсаю блендер как ты уже понял
>>272347 По-твоему я не пробовал и с дивана вещаю? Деревья жрут куда больше, чем трава, и к тому же не дают использовать нормальный шейдер, требуя софт оклюжен, который мне нахуй не всрался. Еще раз поясню для одаренного: я проверял и мои костыли работают быстрее. Просто потому что у меня не йоба террейн с кучей текстур и нормалями, для чего и предназначен встроенный. Проблема только в том, чтобы на этом террейне удобнее делать горы и всякие прочие выпуклости. Если нечего ответить по теме, то просто пройди мимо.
>>272358 >я не пробовал и с дивана вещаю Именно так. >Деревья жрут куда больше Только если у тебя тяжеловесные деревья вроде спидтри. >не дают использовать нормальный шейдер Незнание инструмента. Ты можешь использовать любой шейдер. У меня, к слову, свой шейдер травы, хотя рассажена она через террейн энжин. Получается, всё твоё недовольство только от узколобости и невежества. Понятно.
Хелп. Вот есть у меня текст. Если я буду изменять размер окна, то он будет смещаться, а значит, что в скомпиллированном екзешнике он будет на разных разрешениях экрана в разных местах отображаться. Как это вылечить? Т.е. мне нужно, чтобы текст приклеивался к определенному месту в сцене и при скейле экрана скейлирлся вместе с ним.
Нашел галочку "Pixel corerect", но если ее убрать, то текст становится мыльным
>>272592 НУ я выставил Anchor, но фишка в том, что вот если я поставил текст в верхний правый угол экрана, то при его расширении текст сползает и он уже не в углу
>>272600 алигнмент тоже выстави или вообще рисуй гуи скриптами а не компонентами, их же для пиздюков зделали ДЕДЫ ВСЁ РУЧКАМИ ВЫСЧИТЫВАЛИ ИЗ РАЗМЕРОВ ECRANА
>>272602 >алигнмент тоже выстави Частично помогло. Текст намертво приклеен к краю, но вверх и вниз продолжает смещаться. Ну хоть на этом спасибо >или вообще рисуй гуи скриптами а не компонентами Какие преимущества у гуи текста, написанного скриптом? Больше кастома?
>>272657 Плагины крашат новую версию. А за ссыль спасибо, чет невнимательно смотрел. И напоследок - а чтобы несколько строчек написать нужно каждый раз новый объект гуи текста создавать или есть другой способ?
>>272659 >несколько строчек написать нужно каждый раз новый объект Ставишь галочку рич текст и получаешь минимальную поддержку тегов. Перенос строки работает даже без тегов, но нужно либо выставить подходящий режим оверфлов, либо растянуть размеры гуи текста по вертикали. https://docs.unity3d.com/Manual/StyledText.html
>>272661 В общем да - новый гуи решает мою проблему. Но есть одно "но". Текст будто мыльный. Как это решить? Помню, что подобное прокатывало с пиксельными спрайтами, где нужно просто в настройках материал Filter Mode Выставить на Point. А в случае с текстом что делать?
>>272669 Оказывается после компиляции все очень четко и без размыливания. Возможно, что это сделано для оптимизации в движке. А как реализовывают плавное появление надписи? То есть, чтобы текст слева направо будто по буквам набирался.
>>272673 С появлением 5й юньки были туториалы от самих девов про нвое гуи, и как раз про появление текста по буквам, вроде даже. Они еще эффект 3д интерфейса там показывали.
Можно в мобильном приложении запилить приём платежей не через Google Play или App Store, а через какие-то другие сервисы, которые не дерут 30% прибыли?
>>272709 Ну скажем так это уже знаю, я дошел до циклов в C#, сейчас мучаю "хэдфёст". Что можно почитать по Юнити? Желательно на русском/польском языке? С английским у меня туго, хотя я знаю, что в IT среде это харам, но я такой как есть.
Вопрос по билду - я оставил возможность изменять размеры окошка экрана - речь не о списке разрешений а о тягании за уголки. Так вот, как залочить пропорции и границы камеры при этом тягании?
>>272975 Почему не пробовал дефолтные настройки от стандартной машинки? Олсо, ставить реалистичную массу не советую, лучше найди какой-то коэффициент, около двух или даже меньше.
Ну дайте годных уроков по юнити на русском языке или с сабами (я не воспримаю английскую речь), я понимаю как писать скрипты. Я не понимаю как работать с самим движком.
>>273040 Маска скрывает гуи элементы. Грубо говоря, вместо того, чтобы писать по букве за раз ты пишешь всё сразу, но показываешь по букве. В принципе, писать по букве проще. Но маской тоже можно.
>>273046 Через маску интересный вариант. Когда-то давно пробовал сделать вывод добавляя по букве к тексту. Но напрягало, что при выравнивании по центру, строки начинали плясать по мере заполнения.
>>273057 Я пилил на флеше ультраебанутый метод, с обычным шрифтом и "пустым" на основе обычного удалялся графон шрифта, текст выводился пустым шрифтом (у которого размеры знакоместа были как у нормального, для предотвращения распидорашивания), затем по букве пустой шрифт менялся на нормальный. Делал так потому что при заполнении по букве получалась хуйня с переносом, когда слово прыгало на следующую строку, ну вы поняли.
Парни, сижу и прототипирую свой первый не мобильный проэкт, и короче нужда возникла расчлененку захерачить, лоб руки, ноги отрывать в произвольных местах. Как быть? Чего посоветуете?
Добавляешь в сгибах модели сверы. Если оружие ёбнуло (oncollisionenter) по сфере - создаешь объект "оторванная рука нахуй". Что делать с самим телом - хз. Я не занимался этим. Отрезать онлайн - тупость, т.к. мобилки.
Все. У меня бомбануло. Какой рукожопый жуебок так сделал, мать его во все дыры сношал? НАХРЕНА БЫЛО ЗАКРЕПЛЯТЬ РАЗМЕР ОКНА СИНТАКСИСА? Как мне теперь ОК нажать?
>>273125 Xamarin же. В сублайме нельзя вообще цветовую схему настроить. С таким же успехом я могу использовать Notepad++. А еще мне нужно чтобы ошибки(пропущенные скобки, окончания и т.д.) подсвечивались. Чего тоже в Sublime нет.
>>273139 Ну смотри, все серьёзные разработчики пишут в студии. Но студия же говно. Алтфаки пишут в вим или чём-то подобном. Но это же не для нас. С юнити идёт монодевелоп, но нам же это не подходит. Есть ещё нотепад++, но он слишком простой, нам бы понавороченней. Короче, что угодно, чтобы игр не делать.
>>273141 Пасиб за пояснение, няш. Просто меня как приучили в вузе к студии и выдали лицуху на неё, так и сижу. А тут смотрю, и чет начал сомневаться в правильности моего пути. А тут оказывается обычный онанизьмъ.
Ребзя, прихуячил камеру к бошке персонажа, но из-за анимации бошку хуярит сильно а за ней и камеру. Подскажите в какую сторону копать, что бы стабилизировать эту залупу.
Я сегодня хорошо упоролся и на меня снизошло: в папке Assets не должно быть исходного кода кроме "клея"! Там должны быть собранные из стороннего проекта dll-ки. Почему? Потому что это решает тьму проблем! 1. Юнити компилирует весь проект при изменениях, делает это медленно. Мы выносим код наружу - и никакой перекомпиляции. 2. Мы можем делать нормальное разделение на модули с нормальным тестированием. 3. Мы можем избежать протечки абстракций ниже чем это нужно. 4. Мы можем красиво прикрутить обфускатор, для параноиков. 5. Можно нормально хранить исходный код отдельно от данных, без возни с неработающим git lfs. Использовать для всего остального старый добрый svn или новомодный plastic scm. Это требует решения мелких проблем с контролем версий (чтобы не залить дебажную dll в неправильный репозиторий), и нетривиальной настройки CI, но они решаются. И может не очень получиться жить с Unity Cloud Build.
>>273193 У меня есть знакомая, которая не сечет в программировании, но очень хотела помочь, и вот ты ответил на мой вопрос, она увидела это, непоняла, и теперь у меня будет кекс. Спасибо тебе анон, ну и за идею с дочерним объектом тоже.
Какой петух мне тут советовал стандартный террейн? Ебаные деревья не скейлятся, если шейдер поменять, биллборды и дистанция отрисовки тоже по пизде идут. Нассал тебе дистанционно на ебало, мудак.
>>272290 > При чем здесь вообще рейкасты В том, что вместо пуль у меня обычный хитскан, из оружия идет рейкаст во время стрельбы. Я хочу, чтобы этот луч визуализировался, типа трассеры
>>273459 Да, слепой. Программирую шрифтом Брайля на "гусиной" коже девственниц, заточённых в холодный подвал. Делаю игры в жанре звуковой квест и тактильный хиден обжект. На самом деле нет.
>>273529 Ну я об этом думал, и даже писал тут. Но ожидал изначально побольше вариантов, типо вроде того как создатели л4д реализовавали расчлененку и т.д. Так же чет покопошился в гугле и нашел инфу мол в УЕче пиздатое гуро чуть ли не из коробки. А потом понял что у меня контролер персонажа ебанутый, и 2 день уже переделываю
>>273653 Я о том, что Constrains работают в глобальном пространстве, а не в локальном. Ставлю кубик таким образом. ConstrainsX - значит в локальных координатах Х он не должен двигаться. Но фига. Он не двигается в глобальных - как бы я его не вертел, он будет не двигаться только по одной и той же глобальной оси.
>>273681 Да, Кэп, именно. Об этом я уже несколько раз сказал. На этой странице. Буквально парой ответов выше. Но если тебе лень читать то: Блочить движение он должен в локальных координатах. И кстати, Constrains должны фризить движение в локальных координатах! Он это го не делает, но должен фризить в локальных координатах. В координатах локальных. Координатах в локальных. Кстати, в каких координатах он должен фризить, не подскажешь ли ты мне?
>>273686 Блядь, есть положение обьекта в сцене. Это одна хуйня, управляется трансформом. Есть положение обьекта в физическом мире, управляется с помощью ригидбади. Если ты такой дебил, что даже справку не осилил, то это твои проблемы. Иди дочитывай, а потом приходи, сука, спрашивать. Еблан криворукий.
>>273693 Ты осознаешь, что есть объект, у которого есть трансформ? И что ригидбоди двигает этот объект с помощью физической силы, описанной физическим движком.
>>273699 Создай емпти, создай у него два дочерних ригибоди. соедени их джойнтом, дай одному констрейн по оси х. запусти, подергай джойнт - дочернйи будет двигаться по всем осям кроме х. теперь поверни головной емпти на 90 градусов и подергой джойнт.
>>273705 С помощю физической силы двигается или вращается ригидбади, положение которого, в физическом мире транслируется в трансформ, а не наоборот. Боже да нахуя я тебе все это объясняю, ты же дегенерат. Только время зря трачу.
>>273634 >как сделать чтобы работало? >прочитав справку по юньке
>UNITY - Руководство: Rigidbody (Твердое тело) >Наибольшее отличие между управлением трансформациями и твёрдыми телами заключается в использовании сил. Твёрдые тела могут управляться силами и вращением, трансформации же не могут. Трансформации можно перемещать и вращать, но это не то же самое, что и использование физики. Вы заметите разницу, когда решите сами испробовать это на деле. Добавление силы/вращения к твёрдому телу позволит изменить позицию и вращение компонента трансформаций (Transform) объекта. Вот почему вам нужно использовать только один из них. Изменение трансформаций при использовании физики может создать проблемы столкновениях и других вычислениях.
>>273789 Ну ты же хотел "попроще". Ясли нормально систему стрельбы пилить, с разбросом, ограничение дальности(чтобы проджектайлы автоматически уничтожались пролетев определенное расстояние) то получается очень даже дохуя.
>>273975 Идея норм, надо просто добавить проверку, где именно произошла коллизия и на сколько это отличается от форварда. Иначе будешь прилипать к стенам. Но это не моя игра, чтобы я делал всё. Хотя, была бы это моя игра, я бы выбросил транслейт.
>>273986 >Доказывает, что драг отвечает за инерцию >Кидает кусок справки про абсолютно другую хуйню, которая никак не относится к драгу Ты болен. Тем более, уже сказали, что инерции быть не должно, а ты предлагаешь аддфорс.
>>273990 Там же несколько скриптов. Один с чарактер контроллером, который, кстати, решает большинство проблем. А через транслейт попробуй по кривому террейну походить, например.
>>273996 Вспорол ей живот. Говна не нашел. Может ты себе в ротешник по ошибке насрал?
Как я могу работать у тебя в трусах, если я накидываю тебе за щеку. То, что тывидишь написанное под этим спойлером - я печатаю прямо на члене. Так что не отвлекайся на чтение а лучше причмокивай тщательнее.
Как в скрипте находить/записывать реальное положение объекта по одной из координат? Оно м.б. разным. Сделал для него окошко int, но он обнуляется при запуске игры.
>>274028 Конечно невозможно. Это доказывает тот факт, что я обосрал тебе обало. А теперь иди почисти зубы и сполосни рот, потому что я уже готовлюсь пихать, в который раз, тебе за щеку. Не хочу запачкать хуй в говно.
>>274020 Да он не может перестать срать. Из него не может выходить ничего, кроме говна. Он его ест, потом ним срет в гд. Псрет нюфаням в ротешники, под соусом помощи, срет всем остальным, потому что прост)) Так что пускай срет, а потом жрет. Круговорот говна в гд.
>>274029 Во первых координаты это float. Записывается так: float pos; pos = transform.position.x/y/z Считываем наоборот. Если нужно перед transform указываем ссылку.
>>274066 Ты больной, понимаешь? Или говна переел. Или у тебя отравление мочой. Не знаю. Ты ешь говно, наверное от этого у тебя проблемы с психикой. Или с логикой. Или и с тем и с другим. Я бы тебе помог, но не могу. Или не хочу. А может я тебе уже помог. Ломка? Да, ломка от говна. Тебе было плохо, я посрал тебе в рот. Теперь все хорошо. Да-да, теперь у тебя все хорошо. Но таблетку все же прими. Мало ли что.
>>274089 Я не понимаю что ты там лепечешь про хуй. Единственный хуй, который я вижу, это мой хуй в твоем рту. Проснись, маня, ты обосрался [spolier]себе в рот[/spoiler].
>>274129 NPC npc_mocha=npc.GetComponent<NPC>(); npc_mocha.first_name=... npc_mocha.last_name=... ... Типа так. А может и можно через AddComponent() сразу NPC заполненный присунуть, я хз.
Ананасы, помогите, моих интеллектуальных способностей не хватает, чтобы понять как соединить все стены в один единый меш без хуйни между ними. Сейчас эта конструкция состоит из разных объектов, и каждый предыдущий повернут на начальную позицию следующего.
>>273120 Делаешь модель из нескольких кусков, при отрыве руки удаляешь собственно кисть и там кусок запястья и заменяешь его на модель оторванной руки с торчащими костями и мясом. Ну и не забудь позаботиться о том, чтобы она тот же скелет использовала. Я хуй знает как это, но там как-то можно.
Билд в вебгл. Не отображаются русские символы, вообще, пустая строка вместо них выводится. в коде все на месте, шрифты поддерживают кириллицу, кодировка utf-8, дллки с моно подключил. При запуске игры все работает, не работает именно в билде.
Гайз, как сделать разное поведение кораблям (их нет на сцене, они просто объекты в массиве). Мысль была такая, каждому, будь-то торговец или пират добавлять ShipBehavior() и вызывать к примеру 1 раз в секунду (бой можно считать быстрее). Компюктер не луснет если кораблей будет тысяча и более? Как минимум всех нужно проверить на состояние, спит он, или летит, воюет и тд.
И вообще не хуйня ли это, может есть более труевый способ?
>>267428 (OP) Борщ, гд. Есть вопрос про Ray и рейкасты. Можно ли вернуть то, с чем столкнулся рейкаст? Допустим у меня условный куб рейкастит на x юнитиметров и сталкивается с несколькими условными кубами другого типа. Возможно ли получить те кубы, с которыми он столкнулся и/или произвести некоторые изменения с параметрами этих кубов? смена текстуры/свойств например
Алсо зачем им каждую секунду обновляться? Можно вообще к ним заглядывать чтоб сгенирировать следующую задачу, раз в минуту, а остальное время пускай безмозгло ползут к ней.
>>274216 >Алсо зачем им каждую секунду обновляться? Хотелось бы обсчитывать близлежащие участки ( а то и весь мир) более менее правдоподобно, особенно бой, не то что горит, но хочеться глянуть что из этого получится, опыта поднабраться.
>>274216 Так что, в одной функции все считать нормально? Ну то есть если нет задания, то генерируем, если есть выполняем, пересчитываем координаты, если напали, то ставим на паузу задание и выполняем логику поведения в бою, если отпиздили ищем куда съебаться и тд. Если во сне, то вообще нихуя не считаем и спим дальше.
>>274214 Не считая того, что зачем нужна такая всратая тонна кораблей в этом космосе, если от них всё равно нет никакого прока, так это и делается - прогоняешь весь массив раз в какое-то время и смотришь что случилось. Едва ли у тебя там какая-то сложная математика, чтобы что-то висло.
>>274220 >особенно бой А если у тебя бой без физической модели, то вообще не понятно, ради чего вся авантюра.
>А если у тебя бой без физической модели, то вообще не понятно, ради чего вся авантюра. Ну вот к примеру кто-то прыгает через врата в другую систему, надо же посчитать бой на той стороне, и желательно правдоподобно. Может действительно хуйня, но мне просто хочется понять как писать логику живого мира, где игрок петушок простой, и без него всем охуенно.
Сделал маленький тест - собрал модным Roslyn dll-ку (project.json, dotnet build, всё как у хипстеров). Поставил туда net35 в frameworks, скопировал в Юнити. Юнити подхватила вообще без чиха. Так что если вы используете for вместо foreach для коллекций с целью избежания GC - то больше оправданий для этого нет.
>>274251 Блядь, жопой прочел. Можно возвращать либо имени, по тегу, либо из массива. Например: Physics.Raycast(transform.position, transform.forward, out hit, 10, -1); if (hit.transform != null) { if (hit.transform.name == "Абу") print("Это Абу."); } else if (hit.transform.tag == "Abu") { print("Купи пасскод."); } }
Братушки, короче вопрос опять, вот сделал простое поведение корабля, который летает между планетами. Его поведение прописано в классе TraderBehavior, ну а внутри функция которая на вход принимает сам корабль, и уже получает доступ ко всем параметрам корабля. Но в видосах пацаны говорили что если одна хуйня у одного есть, а у второго нету, то лучше использовать интерфейсы. Еще у корабля есть объект SolarSystem, который используется для навигации, вообще он хранит данные о звездной системе, планеты, а на планетах пидорашки и оборудка и так по цепочке.. Это вообще норм его использовать для навигации?
Я к тому что мб нужно сделать отдельный класс для навигации с только нужным, чем вставлять объект который по ссылкам тащит всю хуйню, или это как раз супер фича ООП?
наконец-то закончил болеть и можно снова делать навмеш своей мечты. доволен. сильно переделал много всего внутри, теперь можно клево толкать информацию из карты вокселей в навмеш, так чтобы она и после рамера-дугласа-пекера была привязана к конкретным эджам. применил чтобы сделать сорта карты спрыгиваний-запрыгиваний. переделал весь триангулятор, теперь Т-образные соединения не допускаются и это сильно упростило хранение всего. написал все так чтобы можно было легко взять готовый граф и триангулировать его, например, с дыркой сделав динамичный обстакл.
>>274193 на самом деле довольно легко. генерируй меш ручками, все что нужно сделать это структурировать его не через жопу а сделать нормальный граф сочленений, если у тебя могут быть соединения не только цепочкой, или Т-образные соединения.
>>274215 стоит добавить что если хочешь чтобы луч протыкал много объектов то используй Physics.RaycastAll.
>>274272 > генерируй меш Вчера весь день потратил на изучение меша и в итоге получилась вот эта хуерга, которая не работает как нужно. Как правильно расставлять вершины на поворотах, чтобы все так не искажалось и сохранялась толщина стены? По пикрилу понятно, что нужно продлевать или расширять вершины, но я хз как это все высчитывать.
>>274307 Внешний угол координаты не меняет. У внутреннего угла 1 координата от первой стенки (он по прежнему на ней лежит), 2 координата - это внешняя точка первой стенки минус sin(45) * ширина.
>>274307 не в ту сторону думаешь. твоя хуйня строится вокруг соединений же на самом деле, просто бери векторы этих соединений относительно места сочленения, нормализуй, сплюсуй, нормализуй. ну и помножь на -1 чтобы вторую координату узнать для двойного сочленения(можно конечно нормальную геометрию вспомнить но так понятней). получишь нормализованное направление которое тебе нужно.
>>274338 ну и да, для сложных соединений нормаль уже нельзя помножать на половину толщины стены, иначе толщина будет ниже нужной. но так как все углы тебе известны и длина одной стороны и треугольник равноберденный то найти длины сторон много мозгов не надо.
>>274338 а. чет про двойные я мало подумал. там же стена тоже тоньше будет. ну, тут тоже прямых углов хватает. не так и трудно будет посчитать эту хуйню.
>>274279 У моно есть дурная привычка делать боксинг когда делаешь foreach для итераторов в некоторых контейнеров. Это может происходить, может нет, может даже пофиксили. Из за чего генерируется ненужный мусор на ровном месте. У MS-компилятора такой проблемы нет.
>>274499 Да. >В таком случае в каком порядке туда записываются объекты? От transform.position Хотя какая вообще разница, перебирать то ты их всеравно будешь через foreach по тегу или по имени.
>>274523 >>274521 Уже разобрался, спасибо только вот мне нужно сферкастнуть а нихуя не кастуется, с лучом все ровно, а сфера не кастится, если первым аргументом указать начало как Vector3 то он жалуется что не Ray, какого хуя собсна.
>>274541 Ну так нужное действие все равно не происходит - он возвращает 50-60 объектов.
RaycastHit[] hits; Ray ray = new Ray(); ray.origin = transform.position; ray.direction = Vector3.back; hits = Physics.SphereCastAll (transform.position,4f,transform.up,0,8); Debug.Log (""+hits.Length+" ");
for (int i = 0; i < hits.Length; i++) {
RaycastHit hit = hits ; hit.transform.GetComponent<NodeMaterial>().cov = true; } Если ставлю маску -1 то он возвращает 50-60 объектов и эксепшн что не найдет такой компонент.
>>274543 Разберись с масками и уменьш радиус до нужного тебе. А GetComponent правильно возвращать вот так: if (hit.transform.GetComponent<NodeMaterial>() != null) hit.transform.GetComponent<NodeMaterial>().cov = true;
Посоны, а как сделать так, чтобы переменная типа bool была true только тогда, когда объект попадает в зону действия SphereCastAll? Если бы рейкаст был одиночный, то было бы понятно.
>>274976 Ну давай разберем по частям, тобою написанное. Складывается впечатление, что ты не слышал про ссылочные типы. Много вас таких по весне оттаяло.
>>273009 крч помогло, то что в sdk-manager в квладке tools удалил 24 версию и установил 23.0.3 (кжсь) android-build. на будущее, если кто ещё столкнётся с проблемой
>>275121 HuiPizda - ссылочный тип (за исключением структур) huiPizda - значимый тип (за исключением object и string) бля, и правда пизданутый язык. В божественной джаве с большой буквы всегда ссылочный, с маленькой всегда значимый.
>>276719 > с большой буквы всегда ссылочный Я вкурсе конвенции. Но ты же понимаешь что ты обосрался? > кастомный класс Я забыл терминологию, на джаве ничего не писал полтора года. как оно называется?
>>277149 >Я вкурсе конвенции. Но ты же понимаешь что ты обосрался? Как только покажешь хотя бы один проект посерьезней laba1 где есть классы с маленькой буквы, то сразу пойму. До этих пор твои жалкие потуги только показывают твою тупость. >как оно называется? Я его спрашиваю что он имеет ввиду, а он мне в ответ "Как называется то, о чем я говорю?". Ебу дал?
Расскажите мне, деревянному, как для собственных классов, которые [System.Serializable] написать удобные операции (сложения, вычитания и т.д.). Когда я пытаюсь сложить две переменные, типа [System.Serializable] public class MyYoba{} меня посылает нахрен и приходится складывать поэлементно. Это делает меня грустной пандой. Научите?
>>294693 С какой целью интересуешься? Если на ПК, бери просто Scirra construct и не еби мозги. А по сути есть ЗАГОТОВОЧКИ в любом редакторе игор. Марио везде найдется.