Ответ: I.D.S. MONSTERS
Супер беглый взгляд:
- можно не пускать луч каждый кадр, а только при нажатой кнопке - можно постоянно использующиеся переменные завести 1 раз в start/awake - вместо new Vector3() можно завести вектор шлюху и перезаписывать в нём значения |
Ответ: I.D.S. MONSTERS
Цитата:
В остальном не вижу причин, по которым может дёргаться. Может, FPS просто скачет? Хотя какой должен быть комп чтобы скакало. |
Ответ: I.D.S. MONSTERS
Цитата:
Когда до оптимизации говнокода дойдёт, вспомню о совете. Сам знаешь, код написан для того, чтобы постоянно его переписывать. Луч пускается постоянно для отрисовки в окне сцены, чтобы я видел куда он падает. Цитата:
Оказалось дёргалось только в окне Game в Unity, в билде было на тот момент всё нормально. Перезагрузил комп, теперь и в юнити не дёргается. Скоро ещё понадобятся тестеры, я пишу управление камерой а ля RTS. Сегодня уже наверно билд с кодом выложу. |
Ответ: I.D.S. MONSTERS
Итак следующий билд.
RTS камера относительно готова. Скачать ТЫК. У камеры появился родительский пивот, который я двигаю "CamPapa". Что умеет камера: 1. Двигаться в восьми направлениях, когда курсор доходит до края экрана. 2. Отдаляться и возвращаться обратно по пяти шагам колесом мышки. 3. Ориентироваться на местности по длине и ширине игрового уровня, останавливая своё движение доходя до края. (Размер игрового уровня сейчас равен размеру плейна). Что камера не умеет: Не умеет поворачиваться по осям. Во первых это функция сомнительной нужности для геймдизайна моего проекта. Во вторых, в данный момент если повернуть камеру, то её ориентация в координатах игрового уровня слетит к херам, превратившись из квадрата в неведомую геометрическую фигуру. Чтобы поворачивать камеру, придётся расчитывать ориентацию с учётом угла поворота камеры, а это вам уже не 10 на 10 умножить так сказать, придётся голову напрячь, возможно и реализую если потребуется. Ограничение движения камеры коллизией с кубом, который натянут на уровень - не предлагать! слишком просто. Говнокод управления камерой: |
Ответ: I.D.S. MONSTERS
Всё робит, музыка играет.
Продолжай, прямо как в старые-добрые времена, когда на Булку выкладывали билды кто что делает (когда кто-то что-то делол). |
Ответ: I.D.S. MONSTERS
Цитата:
В окне компилятора во вкладках ничего про отправку чего-либо куда-либо. Наверно фирма шпионит за тем, как халявщики юзают их софт (я на бесплатной версии). Про кликание за предел карты - реализовать могу, смысла не вижу. В управлении персонажем намеренно будет отсутствовать ПП (хоть он уже и есть встроенный в Unity). |
Ответ: I.D.S. MONSTERS
Цитата:
https://docs.unity3d.com/Manual/Unit...ticsSetup.html Кроме того дев билды тоже открывают порт, но только для обмена данными с отладчиком - не опасно. |
Ответ: I.D.S. MONSTERS
Третья билдуха: ТЫК
Теперь у меня полноценная RTS камера. Умеет и бегать как ранее во все стороны, также отдаляться-приближаться, но теперь она ещё умеет вращаться влево и вправо при зажатом колесе мыши. Я уже говорил, что при моей прошлой вполне удачной системе ориентирования камеры в границах игровой карты невозможен её поворот, так как вся ориентация слетает к херам. Это была нормальная версия, но она подойдёт только для игры, где камеру поворачивать не надо, а я решил, что поворачивать будем! То что вы сейчас видите, это уже пятая версия ориентации камеры. Пришлось помучиться изобретая новые способы, и воюя с одним внезапным багом юнити которого не должно быть, но это баг самой логики в связке "transform.Translate" с "Time.deltaTime" при движении по оси "Z". Грубо говоря, при одинаковом условии, когда объекту запрещено двигаться по этим двум осям "X и Z", по Z он всё-таки двигается на один такт "Time.deltaTime", после чего условие начинает соблюдаться, однако этот баг мою систему уничтожал просто, пришлось вместо двигания камеры её телепортировать, и вот там уже не меняя условий , ни строчки кода, всё с перемещением по Z отлично. Можете сами баг проверить, заменив телепортацию камеры, на её толкание в сторону. Строку: Код:
CamPapa.transform.position = new Vector3(SusaninVector.x, CamPapaCoordinate.y, SusaninVector.z); Код:
CamPapa.transform.Translate(Vector3.right * CamTranslateSpeed * Time.deltaTime); камеру на 90 градусов, и не поедете по Z оси, там то и сработает баг где 1 раз не выполнится условие нахождения в площади уровня: Код:
if (SusaninPositionX > 0.01f && SusaninPositionX < CamMooveRangeX && SusaninPositionZ > 0.01f && SusaninPositionZ < CamMooveRangeZ) заменить образно говоря толкание на телепортацию, и сразу с осью Z проблема отпала. Короче, как работает теперь вся логика движения камеры и его ограничения площадью уровня? Появился ещё один пивот "Susanin", он телепортируется под камеру, далее двигается туда, куда мы хотели бы сместить камеру, определяется находится ли сусанин в площади игрового уровня. Если в площадь попал (она сейчас 20 на 20) то телепортируем на его координаты камеру, если не попал, значит нехрен туда камеру двигать, и мы ничего не делаем. Работает под любым углом поворота камеры. Код: В коде могут присутствовать не мешающие мусорные элементы, пол седьмого утра, мне спать пора, а не остатки прошлых версий управления камерой подчищать ) |
Ответ: I.D.S. MONSTERS
Ох, а можно правую кнопку мыши для вращения? Колёсико жёсткое у меня и глючит :(
Баг выход за границы: Если во время движения кубика кликнуть за границу поля, кубик отправится туда и остановившись будет глючено крутится на месте. При условие что куб не двигается, за границы его отправить нельзя. Цитата:
Мне тоже спать пора :-) Про проблемы с камерой честно говоря не понял... Пожалуйста, скрой простыни кода под спойлер! |
Ответ: I.D.S. MONSTERS
Цитата:
Лол, у меня колесо тоже глючит, правую кнопку сделаю спешл фо ю разово в четвёртом билде. Баг подкрался от туда, откуда не ждали. Решил на скорую руку красоту навести, и сделать космос для билда из плейна, а переименовать его забыл. Собственно у нас сейчас два плейна в билде, вот куб с ума и сходит, решается заменой имени ) Он же по имени объекта в который луч попал событие запускает, где в точку пика прыгает навигатор, а за ним летит куб. Камеру двигать можно, как в реал тайм стратегии, касаясь ею краёв экрана, двигать можно в 8 направлениях. Границы перемещения камеры выставлены размерами игрового уровня, а игровой уровень это у нас бежевый плейн. У камеры есть невидимая нога, которая стоит впереди неё, если она коснулась края игрового поля, то дальнейшее движение (за его пределы) невозможно, специально выставленное ограничение. Проблем с камерой нет, есть проблемы с Unity, он вопреки прописанной логики при особом обстоятельстве разово выполняет действие, которое не должен выполнять вообще, и баг этот я обошёл. Тега спойлер на булке нет, в оффтоп пихать не хочу по тому, что не оффтоп. В общем сейчас сделаю сборку под правую кнопку мыши и без выхода кубика в космос. |
Ответ: I.D.S. MONSTERS
Подъехал новый билд:ТЫК
Цитата:
2. Баг был комплексный, не только второй плейн, но и недоработка кода. Теперь переменная запоминающая в чей коллайдер мы ткнули после проверки на нужный нам коллайдер заменяет в себе имя коллайдера на слово "NiHuYa". Это было одной из проблем. Следующая проблема была в том, что меня интересовали только координаты падения луча на коллайдер, и персонаж двигался к ним, теперь же у нас появились координаты навигатора, и персонаж движется к ним, а не к координатам пика. В общем 4 правки в коде. 3. Камера двигается в восьми направлениях касанием края экрана мышкой. Движение камеры ограничено размерами игрового уровня, она не может выйти за его пределы. У камеры есть невидимая нога, и именно координаты этой ноги в площади игрового уровня контролируются. Сама камера от своей ноги отодвинута немного назад. А при повороте вращается именно нога, а не камера, она его дочерний объект. В общем тестите, буду благодарен за выявление новых багов. Как просил, всё-таки большие коды теперь будут в оффтопе. Код исправленной системы управления персонажем: |
Ответ: I.D.S. MONSTERS
Принимаю ваши советы, идеи и предложения по отрисовке
сетки игрового поля, по которой мы будем двигать монстров (а ля HoMM). В блитце я создавал меш , квадраты отрисовывал полигонами повершинно (2 трианглы на квадрат), с отступом от соседних квадратов. Короче сетка из цельного меша была, а выделение ячейки делал перекрашиванием вершин. В юнити как лучше реализовать визуализацию сетки? Интересует самый дешёвый способ. Меш например был дешёв, так как он один цельный объект, а не куча линий рисуемых. Я также могу меш и тут создать, фигануть его поверх плейна, и установить прозрачность процентов на 40. Или прям по плейну текстурой рисовать? P.s. Сетка будет не гексоганальная, так-как её использование в 3D игрухе бред полный, такая годится только для изометрических игр с поворотом уровня на 45 градусов. (И то бессмысленна, так как вместо восьми направлений движения оставляет нам 6. Её используют вроде только для экономии 25% спрайтов на экране, и усложняют этим путь объекта. Тут сетка будет как в неклассических героях, из квадратов. |
Ответ: I.D.S. MONSTERS
Цитата:
Если очень хочешь запариться с генерацией сетки, то в Юнити тоже так можно, да (есть туторы и т.д.). Можешь также сделать плейн и на него клетчатую текстуру. А если какую-то клетку надо выделить, то тогда полигональный квадратик туда подсовывать. |
Ответ: I.D.S. MONSTERS
Вложений: 1
Цитата:
Этот плейн будем юзать для пика лучом, чтобы просчитать координаты клетки. Скрин ниже. Ну и переход в боевую сцену запилен, пока по пробелу. Я пока не решил чем отрисовывать выделенные квадраты, можно конечно отдельными плейнами, но разумнее всё-таки это сделать единым мешем, и присваивать текстуру или цвет нужным вершинам. P.s. Я щас со стима установил HoMM 7, посмотрю как там у них выглядит это дело. P.p.s. Кому интересно, как я это делал на блитце, код: |
Часовой пояс GMT +4, время: 08:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot