Результаты поиска
| |
dzrone3488 | Дата: Среда, 24 Января 2024, 15:32 | Сообщение # 1 | Тема: Как сместить поворот камеры? |
участник
Сейчас нет на сайте
| У меня есть камера, которая поворачивается с помощью мышки (FPS). Иногда у моего контроллера меняется вектор гравитации, однако камера не меняет поворота и всё работает так будто бы я стою на земле, хотя могу стоять в этот момент на условной стенке. По сути всё что мне нужно сделать, это просто повернуть камеру так, как если бы я поворачивал родителя этой камеры в скрипте, но родителя у камеры нет и она не является дочерней моего контроллера (и не будет по правилам). Как мне сместить все повороты мышкой относительно, того как в пространстве повёрнут контроллер, который является отдельным от камеры объектом? Камера прикреплена к контроллеру физикой rb.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Вторник, 31 Декабря 2019, 17:57 | Сообщение # 2 | Тема: Нет теней |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) попробуй в новом пустом проекте пробовал, результ = nullДобавлено (31 Декабря 2019, 18:16) ---------------------------------------------
Цитата drcrack ( ) попробуй в новом пустом проекте Слушай, я тут решил еще раз попробовать, создал новый пустой проект в Unity 5.6.4. Потыкал-потыкал и вроде всё появилось. Я не успел словить тот момент когда я всё исправил но вполне возможно, это было из-за того что проект лежал на съёмном накопителе а не на SSD. Также я увеличил дальность прорисовки теней и теперь их прям хорошо видно, хотя не могу быть уверен, что дело было именно в прорисовке. Короче тебе + репутацию на всякий случай сделаю Добавлено (31 Декабря 2019, 18:18) ---------------------------------------------
Цитата drcrack ( ) попробуй в новом пустом проекте
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Вторник, 31 Декабря 2019, 01:24 | Сообщение # 3 | Тема: Нет теней |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) возможно материал (т.е. его шейдер) не поддерживает тени? Тоже об этом думал, но тут проблема в двух моментах: 1) У разработчика они поддерживаются 2) Смена материала не помогла
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| | |
dzrone3488 | Дата: Воскресенье, 06 Января 2019, 23:37 | Сообщение # 5 | Тема: Как создать снег? |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) простых решений нет, тем более для древнего железа
А из не простых решений что-то известно? Если нет, то думаю и не стоит тогда заморачиваться
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Воскресенье, 06 Января 2019, 01:48 | Сообщение # 6 | Тема: Смена 2D персонажей |
участник
Сейчас нет на сайте
| Есть 2D персонажи. Есть разные анимации в кадрах (у каждого персонажа свой набор кадров и своя скорость, также свой размер кадра и качество). Нужно создать возможность менять персонажей через меню, при этом без всяких лишних gameObject'ов. Просто зашёл в инспектор, там массив из классов, а там в свою очередь массивы Sprite для кадров различных анимации, закинул, скорость выставил (AnimationClip вместо Sprite тоже приветствуется) и всё. Дальше просто выставляешь в скрипте игрока id персонажа и всё. Однако ступор наступил еще на этапе выбора системы анимации. Стандартная показалась мне самой подходящей, но она тупо не воспроизводит анимации (консоль молчит). А в Mecanim будет не просто работать, если персонажей будет например 50 - 100. Также есть планово возможность создавать своих персонажей путём загрузки своих кадров. Пытался создать свою систему анимации - не получилось.
Я хочу сделать максимально удобную систему создания персонажей. Чтобы всё можно было в одном скрипте настроить. И код хочется, чтобы был грамотный. Есть люди, которые делали похожую штуку? Как это реализовать?
Вот пример скрипта, база где находятся все персонажи и их настройки
Код using UnityEngine; using System.Collections;
public class CharactersData : MonoBehaviour {
[System.Serializable] public class Characters { public string name; [Header("Stats")] public float speed; public float jump_power; [Header("Animations")] public Sprite[] idle; public float idle_time; public Sprite[] walking; public float walking_time; public Sprite[] air; public float air_time; public Sprite[] shoot; public float shoot_time; } public Characters[] characters; void Start () { } void Update () { } }
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Воскресенье, 06 Января 2019, 01:18 | Сообщение # 7 | Тема: Как создать снег? |
участник
Сейчас нет на сайте
| Цитата drcrack ( ) Задача кажется простой пока ты не столкнешься с производительностью изменения карты высот в реальном времени и не поймешь что нужно другое, менее "простое", решение. Увы.
Эххх... производительность - очень важный фактор. А какие могут быть еще решения? Динамичный снег дело новое, поэтому учебного материала не особо много. И да, я забыл "маленькую" деталь, которая скорее всего поставит точку, но всё-же. Снег я вскоре собираюсь рисовать на Terrain.Добавлено (06 Января 2019, 01:33) ---------------------------------------------
Цитата djwirtuoz ( ) https://vk.com/wall-169199183_1293 Не знаю нужен ли там directX 11. Но вдруг поможет
Спасибо хоть за какие-то ссылки. Я правда уже успел его скачать и посмотреть на примеры в проекте. Что сказать... Снег выглядит совсем по другому у меня, ну и разумеется никакой динамики нету. Скорее всего DirectX 11 тут всё-таки необходим.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Пятница, 04 Января 2019, 23:18 | Сообщение # 8 | Тема: Как создать снег? |
участник
Сейчас нет на сайте
| Цитата Denny ( ) dzrone3488, так есть же на форуме Unity и в интернете уроки и объяснения по этому, в том чис Так может скинете мне эти ваши уроки в интернете и на форуме? Я пришёл сюда за помощью. А про то что где-то есть какие-то уроки это и так понятно, да вот только как я подметил DirectX 11 у меня отсутствует и некоторые возможности у меня просто не работают, взять тот-же Tessellation.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Пятница, 04 Января 2019, 23:12 | Сообщение # 9 | Тема: Как создать контроллер анимации через код? [РЕШЕНО] |
участник
Сейчас нет на сайте
| В игре будет возможность создавать своих персонажей загружая кадры и настраивая скорость. Все существующие персонажи сделаны путём индивидуального контроллера. Как создать контроллер для нового персонажа через код? Как сохранять я в принципе понимаю (при условии если есть возможность создать программно)
Вот код с Scripting API:
Код using UnityEngine; using UnityEditor; using UnityEditor.Animations; using System.Collections;
// Create a menu item that causes a new controller and statemachine to be created.
public class SM : MonoBehaviour { [MenuItem("MyMenu/Create Controller")] static void CreateController() { // Creates the controller var controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/Mecanim/StateMachineTransitions.controller");
// Add parameters controller.AddParameter("TransitionNow", AnimatorControllerParameterType.Trigger); controller.AddParameter("Reset", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoB1", AnimatorControllerParameterType.Trigger); controller.AddParameter("GotoC", AnimatorControllerParameterType.Trigger);
// Add StateMachines var rootStateMachine = controller.layers[0].stateMachine; var stateMachineA = rootStateMachine.AddStateMachine("smA"); var stateMachineB = rootStateMachine.AddStateMachine("smB"); var stateMachineC = stateMachineB.AddStateMachine("smC");
// Add States var stateA1 = stateMachineA.AddState("stateA1"); var stateB1 = stateMachineB.AddState("stateB1"); var stateB2 = stateMachineB.AddState("stateB2"); stateMachineC.AddState("stateC1"); var stateC2 = stateMachineC.AddState("stateC2"); // don’t add an entry transition, should entry to state by default
// Add Transitions var exitTransition = stateA1.AddExitTransition(); exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransition.duration = 0;
var resetTransition = rootStateMachine.AddAnyStateTransition(stateA1); resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "Reset"); resetTransition.duration = 0;
var transitionB1 = stateMachineB.AddEntryTransition(stateB1); transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoB1"); stateMachineB.AddEntryTransition(stateB2); stateMachineC.defaultState = stateC2; var exitTransitionC2 = stateC2.AddExitTransition(); exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "TransitionNow"); exitTransitionC2.duration = 0;
var stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC); stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, "GotoC"); rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB); } }
А вот и ссылка на Scripting API
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
Сообщение отредактировал dzrone3488 - Суббота, 05 Января 2019, 02:03 |
|
| |
dzrone3488 | Дата: Воскресенье, 09 Декабря 2018, 01:12 | Сообщение # 10 | Тема: Как создать снег? |
участник
Сейчас нет на сайте
| И так. Задача проста. Есть карта высот. Нужно, чтобы при взаимодействии колизии других объектов на карте рисовалась выпуклость (желательно мягкая), после чего заново применялась к материалу (Standart). Нужно это для создания сугробов и следов. Также было-бы интересно узнать как увеличить интенсивность Height в Standart, поскольку 0.8 как максимальное значение весьма маленькое для создания хорошего сугроба (нужно хотя-бы 1.5 юнитов).
Сразу говорю, что DirectX 11 у меня не поддерживается и денег у меня нет. Заранее спасибо
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Суббота, 06 Октября 2018, 01:50 | Сообщение # 11 | Тема: Помогите решить проблему с передвижением! |
участник
Сейчас нет на сайте
| И так... Не так давно задал вопрос, который пришлось всё-таки решать самому. Тут у меня даже нет предположений, поскольку с такой штукой работаю в первый раз. Суть такова - мой игрок меняет вращение по X и Z при изменении угла поверхности (IK я пробовал использовать, но не чем хорошим это не закончилось). Когда поднимаешься в горку - всё просто отлично, ну а когда спускаешься - в целом нечего не меняется вообще, да вот только результат меня не устраивает. В общем я видео внизу оставлю, там собственно сами можете всё увидеть. Также приложу часть кода (Весь скрипт выкладывать нету смысла потому что 362 строки). Буду очень благодарен за помощь!
Само видео
Код RaycastHit normal; if (Physics.Raycast(new Ray(transform.position + new Vector3(0,0.5f,0),Vector3.down),out normal, 1)) { Vector3 vec = new Vector3(0, -normal.normal.z,normal.normal.y); bodyAngle.rotation = Quaternion.LookRotation(vec); bodyRotation = bodyAngle.eulerAngles; transform.eulerAngles = new Vector3(Mathf.LerpAngle(transform.eulerAngles.x,bodyAngle.rotation.x * Mathf.Rad2Deg * 1.2f,10 * Time.deltaTime),transform.eulerAngles.y,Mathf.LerpAngle(transform.eulerAngles.z,bodyAngle.rotation.z * Mathf.Rad2Deg * 1.2f,10 * Time.deltaTime)); }
З.Ы - Сразу отвечу, почему я умножаю угл на 1.2. Это корректировка. Без неё персонаж меняет положение, но не ровно под поверхность
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
Сообщение отредактировал dzrone3488 - Суббота, 06 Октября 2018, 01:53 |
|
| |
dzrone3488 | Дата: Среда, 03 Октября 2018, 16:08 | Сообщение # 12 | Тема: Камера вокруг персонажа крутится не правильно |
участник
Сейчас нет на сайте
| И так... задача: нужно сделать так, чтобы камера крутилась вокруг персонажа с помощью мышки (сам персонаж при этом не двигается). Сначала осуществил это с помощью нуль объекта, внутрь него поставил камеру на определённом расстоянии от игрока и поехал крутить вот так:
Код transform.localEulerAngles = new Vector3(x,y,z);
Всё работало отлично, однако я решил оптимизировать систему и избавиться от этого нуль объекта, пытаясь крутить вот так:
Код transform.RotateAround(position,direction,angle);
Камера крутится, но крутится не правильно. Если я не ошибаюсь (а я могу ошибаться, потому что ознакомился с этим совсем не давно) это называется "Шарнирный замок". Я буквально на днях +- разобрался с вращением в Unity, но видимо не до конца. Во время вращения по одной оси, остальные тоже каким-то образом изменяются. Буду благодарен, если кто-то объяснить как сделать правильно, и почему именно так. Путаница несусветная
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Суббота, 27 Января 2018, 21:20 | Сообщение # 13 | Тема: Планетарный Terrain |
участник
Сейчас нет на сайте
| Всем привет! Сегодня я пришёл с весьма трудным вопросом (по крайней мере для меня). У меня стоит задача создать планету в реальных пропорциях с персонажем, с возможностью передвигаться по ней.
Безусловно я уже рассмотрел много различных способов реализовать это. Создать притяжение к этой планете будет совсем просто, именно по этому этот вопрос можно исключить. Основной проблемой является непосредственный переход из космоса на поверхность планеты. Давайте рассмотрим, что мне необходимо сделать, и этакие варианты осуществления:
Есть текстуры спутника Земли - "Луны", разрешением в 8K и карта Normal и Height соответственно, тоже 8K. Нужно создать сферический Terrain в реальных пропорциях с персонажем. При этом поверхность планеты должна быть идентична текстуре, чтобы переход был максимально не заметен. Также планируется наименование кратеров, и других Лунных достопримечательностей реальными названиями. (Идеальной точности по размерам планеты не обязательно, разрешена погрешность)
Первый вариант осуществления задачи это переход из классической сферы на Terrain. Можно например сделать, так чтобы во время пересечения границы космоса и атмосферы, планета каким-либо образом скрывалась из видимости игрока, и именно в этот момент заменить сферу Terrain'ом. Этот вариант не подходит по нескольким причинам: во-первых игра будет сетевой, и луна будет не единственной планетой на которую можно будет приземлится, это значит что переходы между поверхностью и сферой могут быть заметны другим игрокам, и как я считаю наведут мусора в коде, во-вторых появляется необходимость писать новый скрипт, который будет определять в какую часть планеты приземлился игрок (В данном случае мы лишаемся точности). Игра предусматривает с помощью приборов определять приблизительную точку соприкосновения с грунтом (+ на некоторых планетах возможны такие факторы, как ветер).
Второй вариант - смена сцен. Этот вариант, можно сравнить с перемещением между измерениями в игре Minecraft. Имеет те же минусы, что и первый способ.
Третий вариант, как я считаю самый правильный, но имеет некоторые нюансы - использовать сферический Terrain с системой LOD. Данный способ позволит приземляться на поверхность без переходов и спокойно менять гравитацию игроку, при этом появляется возможность наблюдать за игроками используя средства масштаба изображения. Минимум кода, возможность задать планете необходимые размеры. Но есть ряд минусов. Ну для начала нужно, чтобы рельеф планеты был приближен к оригиналу и имел текстуру как из космоса, так и на поверхности без перехода. И есть вариант как это исправить, можно взять текстуру 16K и замостить бесшовной текстурой грунта, а затем смешать с помощью режимов наложения, но это увы я сделать не смог и это отразится на оптимизации. Также горы которые я получаю с 8K карты высот, имеют слишком мало полигонов и требуют как минимум 2x кратного увеличения (Эксперимент на плоском Terrain). Кратеры вовсе не вышли (Только больших размеров). Я порылся в интернете и набрёл на такой плагин для Unity как "Planetary Terrain", но как я понял он позволяет создавать только свои собственные планеты, и других размеров. + Слишком много кода, и работать будет трудно, тем-более если в игре будет возможность посещать другие звёздные системы. Единственный вариант - это найти текстуру 16K Луны, которую я переведу в карту высот. Далее следует создание сферы с рельефом, а потом текстура, которую я не знаю как сделать, потом сделать LOD этой сферы в 5 ступеней. Все эти 5 ступеней разрезать на отдельные части. А далее в Unity создать систему прорисовки этих самых частей. Но увы это выглядит трудно, и я бы хотел узнать у вас как можно реализовать мою задумку? 1) Где найти текстуру 16K в полной мере? 2) Есть-ли плагин для Unity который умеет прорисовывать определённые участки модели?
Снизу я оставлю видео, того что я хочу сделать, но там отсутствует текстура поверхности и горы имеют слишком мало полигонов (Если текстура всё-таки имеется, то как я подозреваю отличается от оригинала)
Текстура Луны но в маленького размера (У меня 8K)
ЗАРАНЕЕ СПАСИБО!!!
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Воскресенье, 10 Декабря 2017, 16:33 | Сообщение # 14 | Тема: Расскажите пожалуйста сделать на подобии этого? |
участник
Сейчас нет на сайте
| Цитата SkySupra ( ) Подробнее могу сегодня вечером написать, когда буду за компом. По статьям не знаю, возможно есть, надо смотреть. Также как вариант можно в ассет сторе проверить аналогичные задачи.
Добавлено (05 декабря 2017, 17:45) --------------------------------------------- Набросал систему поворота, ссылка на GitHub. Основные моменты. Находим угол между взглядом юнита и камерой. После отдаём этот угол в GetAvatarByAngle. Чтобы определить нужно ли поворачивать спрайт (т.е. смотрим на бок юнита с левой стороны или с правой), производим векторное произведение. Код
private void Update() { float angleCamUnit = Vector3.Angle(trCamera.forward, trUnit.forward); AvatarDirection avatar = avatarConfig.GetAvatarByAngle(angleCamUnit);
bool isFlip = false; if(avatar.IsCanFlip) { Vector3 cross = Vector3.Cross(trCamera.forward, trUnit.forward); isFlip = cross.y < 0; }
rendererModel.sprite = avatar.Idle; rendererModel.flipX = isFlip; }
Здесь производим поиск ближайшего угла из заданных avatarDirections. После возвращаем AvatarDirection. Код
public AvatarDirection GetAvatarByAngle(float directionAngleDeg) { float smallestLengVel = float.MaxValue; AvatarDirection best = avatarDirections[0]; foreach(var item in avatarDirections) { float angleDiff = Mathf.Abs(Mathf.DeltaAngle(directionAngleDeg, item.AngleDeg));
if(angleDiff < smallestLengVel) { best = item; smallestLengVel = angleDiff; } }
return best; }
AvatarDirection это контейнер набор графики (например анимация: стоять, бежать, атаковать) и др. настройки. Так же в нём задаём угол (про котором нужно выбирать этот набор). Далее делаем из UnitController машину состояний и скармливаем ему выбранный AvatarDirection. Например, если юнит находится в состоянии бега, то в зависимости от угла мы видим тот или иной набор анимации бега. Также можно поправить билдборд, но это уже зависит от конкретных задач, как мы хотим поворачивать спрайт на камеру.
Спасибо большое! Будем разбираться... Отпишусь когда будут результаты
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Понедельник, 04 Декабря 2017, 17:17 | Сообщение # 15 | Тема: Расскажите пожалуйста сделать на подобии этого? |
участник
Сейчас нет на сайте
| Цитата SkySupra ( ) Я бы реализовал следующим образом. Создаем класс контейнер с полями: угол взгляда, анимации (стоять, бег...) и др. Формируем набор контейнеров для каждого угла (0 градусов - смотрим в спину, 90 в бок и тд. На сцене имеем два юнита. Каждый имеет вектор взгляда. Для отрисовки юнита находим угол между взглядом этого юнита и самого игрока. Полученный угол округляем до ближайшего угла кратного 45. После выбираем нужный контейнер с анимациями. Последний этап, нужно определить в какой области находится найденный угол для зеркалирования спрайтов, чтобы не задавать 2 разных набора для поворота в сторону.
Спасибо за ответ! Хоть кто-то. Но для меня это чёрный лес и я в принципе работаю с такими вещами в первый раз. Я бы был бы очень благодарен, если бы ты рассказал бы это поподробнее (если с иллюстрациями то вообще эталон)! Я бы с радостью потом поделился своим скриптом, потому что не я первый, не я последний. Или если существуют хоть какие-нибудь статьи на эту тему?
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Суббота, 02 Декабря 2017, 00:08 | Сообщение # 16 | Тема: navmeshagent и сложный рельеф |
участник
Сейчас нет на сайте
| А почему именно Navmeshagent? Если речь идёт о всяких туннелях, или коридорам то одно дело. А Terrain это немного другая среда. Agent работает с обходом препятствий и на сложный рельеф он не рассчитан, хотя скажу в Unity 4.5.1 он с ТАКИМИ горами справлялся не плохо. Я бы просто сделал бы своего Agent'а для передвижения конкретно на Terrain.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Суббота, 02 Декабря 2017, 00:01 | Сообщение # 17 | Тема: анимированные спрайты |
участник
Сейчас нет на сайте
| Нууу как вариант можно нарисовать по кадрам в одной текстуре а потом просто разделить через Slice в Sprite Editor. Анимировать мульти спрайты очень просто. Еще можно искажать текстуру как это делает Wind с 3D моделями деревьев и той же травы. Ну на край можно сделать анимированную текстуру наложив видео с Alpha каналом.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
dzrone3488 | Дата: Пятница, 01 Декабря 2017, 23:56 | Сообщение # 18 | Тема: Интеграция таблиц лидеров и достижений |
участник
Сейчас нет на сайте
| Я для создания своих таблиц использую обычные базы данных. Хостинг взял. В своей базе считай сортировка уже есть. Да и обращаться легко. Если тебе нужно типа Google Services, то есть еще Newgrounds, но я боюсь тебе он не подойдёт. А вообще если я не ошибаюсь Google, часто именно в Play Market используют.
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| | |
dzrone3488 | Дата: Воскресенье, 10 Сентября 2017, 02:37 | Сообщение # 20 | Тема: Проблема с компиляцей для android? |
участник
Сейчас нет на сайте
| Цитата afq ( ) Как настроить?
Ну как. JDK, SDK. И в принципе всё. А вообще компиляция и в Unity 4 была очень даже неплохой, по крайней мере в оптимизации она превосходит Unity 5 перешедший на 64x системки
Я делаю игры, а вы в них играете! :) Моя группа по созданию игр - www.vk.com/dzrone
|
|
| |
|