• Какая структура данных лучше в конкретном случае?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Во-первых, возьмите да проведите тест, если вам так критична производительность, гадать в таких ситуациях бесполезно.
    Во-вторых, более чем уверен, что Queue вам хватит за глаза и за уши, и вы просто отвлекаетесь на несущественные вещи.
    Ответ написан
    Комментировать
  • Какая графика проще в освоении пиксельная или векторная?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    И то и то одинаково сложно. Другое дело, что у растровой и векторной графики совершенно разные инструменты, и в зависимости от желаемой стилистики может быть проще использовать тот или иной метод. Если взять в качестве примера The Banner Saga, то такой визуальный стиль может быть проще нарисовать кистями в фотошопе из-за обилия мелких деталей, не смотря на общую "векторность" стиля. Всё зависит от того, что вы хотите в итоге получить.
    Ответ написан
    Комментировать
  • Для чего можно использовать native plug-in C++ в Unity3d?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Обычно - никакую. По большей части на плюсах пишут только разработчики плагинов для Asset Store. На мобильных платформах плюсовым кодом оборачивают взаимодействие с операционной системой, например, сохранение картинок в галерею. На компе плагины могут понадобиться для видеозаписи или физических симуляций. Короче говоря, если вы задаёте такой вопрос, значит писать плюсовые плагины вам не нужно, пользуйтесь готовыми.
    Ответ написан
    Комментировать
  • Векторная графика в Unity для 2D игры?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Экспорт в PNG это нормальная практика, все так делают. Если хочется получить честную векторную графику в юнити, то начиная с 2018.1 существует пакет com.unity.vectorgraphics, здесь можете почитать о нём подробнее. Либо можете воспользоваться плагином.
    Ответ написан
    Комментировать
  • Как решить проблему со скриптом вхождения в машину?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Дебаггером пробовали подключаться? Глянул мельком, но всё выглядит так, что у вас после срабатывания первого условия сразу же сработает второе. Сделайте хотя бы else if, но лучше, конечно, сделать специальный компонент для кнопки и отделить логику входа/выхода из машины. По аналогии с UI.Button.
    Ответ написан
    2 комментария
  • Как сделать правильно управление памятью в приложении?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Если на сцене есть какие-то ссылки на объекты вне сцены, то при загрузке сцены все они попадают в память. Ресурсы вам не сильно помогут, они точно так же убьют вам приложение. Вам надо стримить видео напрямую с диска, например, из папки StreamingAssets. Подробности есть в документации.
    Ответ написан
  • Как получить спрайт из текстуры?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Спрайт это не текстура, он чем-то похож на мини-Mesh, у него есть свой список вершин и ссылка на текстуру, к которой он прикреплён.

    Подозреваю, что проблема решится сама собой, если использовать EditorGUILayout.PropertyField. Если такой вариант не подходит, то можно попробовать посмотреть в районе SpriteUtility.GetSpriteFromPathsOrObjects. В этом классе обрабатывается перетаскивание спрайтов на сцену, думаю, что и перетаскивание в инспектор должно быть где-то рядом.
    Ответ написан
  • Как отключить весь свет в unity 2018?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Чтобы получить абсолютную черноту нужно:
    1. Убрать Directional Light.
    Результат
    5b4b1a4ee2cb3061886982.png

    2. Убрать Environment Lighting на вкладке Lighting либо с помощью ползунка Intensity Multiplier, либо выставив везде чёрный цвет.
    5b4b18adb6f6b163756612.png
    Результат
    5b4b1a240fa80420593217.png

    3. Убрать Environment Reflections либо с помощью ползунка Intensity Multiplier, либо поменять Source на Custom и оставить поле пустым.
    5b4b191bdee8e314814951.png
    Результат
    5b4b1a8a660db705958021.png

    После этого вы получите темноту чёрного цвета и сможете начинать возвращать источники света и отражений.
    Ответ написан
    Комментировать
  • Можно ли в новой версии Unity(2018.2) писать на Java?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Нет, насчёт скриптов ничего не поменялось, они по-прежнему только на C#, API движка остался тем же. Они только упростили разработку мобильных плагинов, больше ничего. Если вы плагины не пишите, то вам от этой фичи пользы мало.
    Ответ написан
    Комментировать
  • Как уменьшать альфаканал изображения в Update?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Самый простой способ - использовать CrossFadeAlpha. Но твинеры, конечно, гибче и удобнее в использовании. Для начала можете попробовать DOTween.
    Ответ написан
    Комментировать
  • Как настроить пресеты рендера UE4 на такой-же как у X-Ray?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Конечно возможно. Можно и лучше, во времена сталкера никто про PBR и не думал, сейчас производственные процессы совсем другие. Вообще говоря, глупо спрашивать можно ли воспроизвести в современном движке графику десятилетней давности. Читайте документацию, смотрите туториалы (Lighting, Post Processing). Просто так включить галочку "как в сталкере" не получится, внешний вид игры из многих компонентов складывается: стилистика моделей, текстур и эффектов, различные пост-процессы, ракурс и движение камеры, и т. п. Нужно садиться и анализировать оригинал, чтобы понять какие приёмы они использовали, потом воспроизводить это средствами Unreal.
    Ответ написан
    Комментировать
  • Не работает связь между скриптами. Что делать?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Связь между скриптами работает замечательно, вы не понимаете разницу между ссылочными и знаковыми типами. MoveItems.coin имеет тип int, который не является ссылочным типом, а это значит, что в старте вы копируете текущее значение из MoveItems в CoinUi, и это значение потом просто лежит в переменной и не меняется. Если вы хотите получить текущее значение, то вы можете, например, сохранить ссылку на MoveItems и обращаться к coin через неё. Но, вообще говоря, превращать число в строку в Update это не очень хорошая идея, поскольку ToString выделяет память при конверсии, и со временем вы можете либо загадить всю память и уронить приложение, либо нарваться на фризы во время работы сборщика мусора. Лучше использовать события или что-нибудь ещё.
    Ответ написан
    Комментировать
  • Как из кода вызвать что происходит на двойной щелчок по го в иерархии?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Либо меняете Selection.activeGameObject и вызываете SceneView.FrameSelected, либо вычисляете Bounds и вызываете SceneView.Frame.
    Selection.activeGameObject = gameObject;
    
    SceneView.currentDrawingSceneView.FrameSelected();
    // или
    SceneView.lastActiveSceneView.FrameSelected();
    // или
    EditorWindow.GetWindow<SceneView>().FrameSelected();

    Ещё можно заглянуть в исходники и поискать другие способы.
    Ответ написан
    3 комментария
  • Как рендерить изображение через RenderTexture & Camera?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Создаёте камеру, создаёте текстуру, суёте текстуру в камеру. После этого камера будет рендерить в пропорциях и разрешении тектуры. Далее переводите канвас в режим "Screen Space - Camera", суёте в него камеру, и он будет в пропорциях камеры.
    Ответ написан
    Комментировать
  • Как связать физический движок JBullet и анимацию?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Никак, анимация сама по себе, физика сама по себе. Движение по физике, с упрощёнными коллайдерами, а анимация в догонку, коллайдеры не двигает. Если такой вариант не подходит, то навтыкиваете коллайдеров в кости модели, помечаете их в движке динамическими и двигаете анимацией. В любом случае, я бы советовал не пытаться сделать идеальную синхронизацию сверхточных коллайдеров, в 99% проектов это не нужно, не думаю, что ваш исключение.
    Ответ написан
    Комментировать
  • Можно ли организовать мат. вычисления ч/з шейдер и передать рез-т в скрипт (Unity)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Можно, но не для всех случаев это будет быстрее, и в конечном итоге вам всё равно придётся профайлить, чтобы понять выигрыш. Видеокарты хорошо умеют работать с векторами и имеют специальные инструкции, которые позволяют совершать несколько арифметических операций за раз, соответственно и ваш алгоритм должен использовать эти сильные стороны, если вам просто нужно факториал посчитать, то возиться с видеокартой смысла нету, вы больше потеряете на загрузке/выгрузке данных с GPU.

    Что касается реализации, то это можно сделать либо с помощью вычислительных шейдеров, либо с помощью обычных шейдеров, всё зависит от возможностей целевой платформы. На компе, если очень хочется, можно и CUDA прикрутить. Если с шейдерами раньше не работали, то могу посоветовать The Book of Shaders, там не про Unity, но достаточно толково.

    К слову говоря, если у вас задача стоит не в переносе на видеокарту, а в оптимизации, то процессоры тоже не лыком шиты, у них есть SIMD, может быть это вам больше подойдёт.
    Ответ написан
    1 комментарий
  • Как вы работаете с heightmap resolution (2^k+1) (unity)?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Разбивать нужно с дублированием вершин внутри шва. Возьмём примитивный случай с террейном четыре на четыре клеточки, размер массива вершин в данном случае будет пять на пять. Разобьём его на четыре части, каждая сторона будет разделена пополам. Чтобы посчитать размер нужных массивов, нужно вычесть единичку из стороны, поделить на два и прибавить единичку. Таким образом, получаем четыре массива три на три, каждый содержит в себе два на два клеточек.
    Для вашего случая аналогично, вычитаете единицу из 513, делите на восемь, получается 64, прибавляете единицу, получается 65. Вот и размер нужного вам массива. На стыке вершины будут дублироваться, но каждый кусочек будет независимый.
    Ответ написан
    5 комментариев
  • Как создать объект по линии проведения пальца?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Берёте LineRenderer и в апдейте проверяете нажатие пальца. Если нажатие есть, то берёте его экранную позицию, переводите её в мировую через Camera.ScreenToWorldPoint и суёте в LineRenderer.SetPosition.
    Ответ написан
    Комментировать
  • Как сделать так, чтобы Юнити открывал каждый скрипт не в новом окне Visual Studio, а в новой вкладке?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    По всей видимости, у вас не поставлен или сломан плагин Visual Studio Tools for Unity. Можно поставить галочку в юнитёвом установщике, либо поставить его отдельно через студию.
    5b3295b74f830381776921.png
    Ответ написан
    Комментировать
  • Как создавать подобные игры на Android?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    1. Пишут на чём угодно, но обычно берут готовый движок и пишут на том, что есть в движке. Это может быть Java, это могут быть плюсы или ещё что.
    2. Нормальные современные игровые движки позволяют разрабатывать и тестировать игру прямо в редакторе, без сборки на устройство.
    3. Обычно весь интерфейс делают картинками, в некоторых движках ещё можно использовать и SVG. Так-то по себе вариантов вывода нужной графики на экран есть миллион, можно и шейдерами всё сделать. Поддержку CSS я видел в паре движков через плагины и экспериментальные модули, но чаще для этого используют WYSIWYG редактор.
    Ответ написан
    Комментировать