Ответы пользователя по тегу Разработка игр
  • Как смещать позицию с помощью Дочерних объектов, тем самым сместить позицию в Центр?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    https://docs.unity3d.com/ScriptReference/Rigidbody...
    Не знаю поможет ли эта ссылка вам, но подозреваю что floatingGameEntityFlat.centerOfMassOffset банально переопределяет вот это вот)
    Там же есть метод заставляющий Физическое тело (Rigidbody) пересчитать центр масс, а считается он банально на основе геометрии коллайдеров , из которых "слепленн" объект
    Ответ написан
    2 комментария
  • Как удалить объект из иерархии с помощью луча?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    толком и не понял в чем собственно вопрос. Как вместо всего родительского объекта удалить только пару детишек внутри??
    Тут целая масса вариантов.
    1) Отдельные слои/теги для нужных объектов (так же лучом смотрим куда попали, только не первый попавшийся объект. а все кого луч зацепил. RaycastAll метод)
    2) по прежнему попав лучом в родительский объект - просто по именам искать (если однотипные или объекты с определенным компонентом. FindChild , GetComponent и тд.
    3) Наверно мой любимая вариация варианта номер 2 - на родительские однотипные объекты навесить скрипт(или разные скрипты с наследованием) аля "Инфо о здании" какой нить BuildingComponentRefs.cs ,в котором пару публичных ссылок с подставленными нужными объектами. и возможно даже пару методов для работы с ними, для упрощения себе жизни. всякие аля "Выключить всё" "Включить все" "Пометить красным" и тд и тп. Получаться префабы с уже настроенными/подставленными ссылками. и ничего искать не надо, предполагая что на родительском объекте висит этот "описывающий" скрипт (и так как ссылки подставляются ручками, то не обязательно имена и места/иерархию в префабах прям так строго соблюдать)

    Но все вообще сильно упирается в начальную архитектуру приложения и то как вы там что у себя реализовали и что планируете дальше.
    Ответ написан
    3 комментария
  • Куда пропадает рабочее пространство Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Как и у обычного компонента камеры, у камеры в Scene View - есть границы ближе и дальше которой не рисует.(в обычной камере Near и Far )
    Так вот вы в плоский предмет прям уткнулись.Пропало отображение только в SceneView. Сами объекты по прежнему все на месте.Так что вы не могли таким вот образом "запороть" сцену.
    Ответ написан
  • Как реализовать ресурс, который будет восполняться с течением времени?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Если ресурс критичный и игра онлаин - то с сервера получать и не тужить, а в перерывах между опросом сервера, как devalone предложил - простеишим таймером.

    Если игра офлаин - то тут чтоб между выключениями/сворачиванием игры продолжало копить энергию - вам бы запомнить куда-нибудь (в PlayerPrefs к примеру или просто в фаилик) - время последнего прибавления/подсчета энергии.
    В момент следующего подсчета текущего количества энергии посмотреть сколько прошло времени с прошлого просчета (когда мы запомнили время) - и вуаля..добавить энергии за прошедшие N минут/часов/дней
    Если энергия критична и надо чтоб не читерили к сохраняемому времени добавить соль, хеши, меши и тп) чтоб по крайней мере нельзя было открыть фаилик и подменить время. а вот от перевода времени на устроистве - большой вопрос как защитится). разве что при запомненном времени - позволять потом прибавлять энегрию в минус. наказывая читеров)
    скажем перевел он на год вперед. а потом спустя день отмотал на год назад - и вы у него энергию в минус за год отняли))
    Ответ написан
    Комментировать
  • Как вычислить позицию игрока в гонке?

    MrMureno
    @MrMureno
    VR for all
    Если я правильно понял вам надо знать кто первый, кто второй и тд.
    Можно решить не столько позицией - сколько временем(похоже на первый вариант с чекпоинтами будет)
    Пересекают чекпоинт - засчитывается сколько секунд со старта гонки ушло на "достигнуть этой точки"и так же получим данные, на сколько друг от друга отстают. как в раллийных и тд гонках
    будет табличка аля
    Car1 - 1:23:234+0:00;
    Car2 - 1:24:734+1:50;//на полторы секунды отстает/позже добралась
    Car2 - 1:25:734+2:50;//на 2.5 секунды позже лидера
    и далее по аналогии.
    Можно считать не от лидера , а от себя. тогда все кто перед тобой достигли чекпоинта будут с минусовой прибавкой ко времени - показателем на сколько вас обгоняют.

    А расстояние проверять можно только если у вас трасса прямая, или есть кривая проходящая по трассе(и можно вычислить не напрямую расстояние, а сколько надо проехать по кривой).
    Иначе возникает проблема на крутых поворотах и изгибах и с ребятами отстающими на круг)
    Ответ написан
    3 комментария
  • Как реализовать drag and drop в пространстве?

    MrMureno
    @MrMureno
    VR for all
    docs.garagegames.com/torque-3d/official/content/do...
    Вы же наверняка пользовались хоть каким-нибудь 3d редактором..
    Дополнительные объекты/контролы.
    Стрелочки - по оси позволяют сдвинуть.
    Квадраты/плоскости - двигать объект в плоскости (что как вы описали не вызывает проблем)
    Ответ написан
    Комментировать
  • Как нужно изучать JS в unity?

    MrMureno
    @MrMureno
    VR for all
    В Unity не JS , а UnityScript ,похожий на JS по синтаксису. И на нем можно писать, но так никто не делает, куда больше возможностей и примеров у C#
    Ответ написан
    Комментировать
  • Как доработать скрипт, так что бы уровень звука был одинаков на всех сценах?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Все же давайте отдельный совет , отдельный ответом дам.
    У вас сейчас настроики звука сильно связанны с самим компонентом воспроизведения.
    По хорошему у вас есть статическая или глобальная (или еще как хотите) структура данных для настроек.
    Аля какой-нибудь класс где есть "громкость", "доп эффекты", "выбранный скин" и тп. просто данные.
    Меню настроек будет позволять эти данные изменить и сохранить.
    А вот скрипт занимающийся воспроизведением - обратиться к этим данным и использует их.

    к примеру если назвать класс с настройками GlobalSettings))
    public class GlobalSettings
    {
     public static float musicVolume;
    }

    то из него берем громкость для скрипта где управляем музыкой
    public void Update()
        {
            AudioListener.volume = GlobalSettings.musicVolume;
            
        }

    а вот изменение положение слайдера - будет менять нашу новую глобальную переменную)
    float newVolume = //тут как нибудь получаете новое значение 
    // к примеру из эвента  ChangeValue() в слайдере..или еще как 
    GlobalSettings.musicVolume = newVolume ;


    надеюсь я донес общий принцип и смысл того , как я бы сделал настройки
    (код писал так из головы, возможны опечатки и неточности, но тут смысл и вариант решения доносил, а не код за вас писал)
    Ответ написан
    3 комментария
  • Как принято делать фабрику предметов?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    "Но тогда возникает вопрос, а как быть, если я хочу хранить спрайты оружия и их в модель меча передавать? Ведь без MonoBehaviour я не смогу назначить спрайты в инспекторе."

    Предложил бы отдельно хранить этакие "Ресурсы/Ассеты для оружия".
    Какой-нибудь список где по айдишнику оружия, вы можете достать спраит, описание текстовое, модель..что угодно.
    Методы для работы со списком возможно для удобства и всей этой инкапсуляции и тд.

    Тогда логика оружия условно будет отделена от представления его. Хотите показать мечь - достали спраит из ресурсов - и показали его. а все остальное время храним набор айдишников.
    Ответ написан
    Комментировать
  • Как преобразовать JSONObject в string на Unity с socket.io?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    https://docs.unity3d.com/ScriptReference/JsonUtili...

    сделайте сначала json по формату. передайте с сервера именно Json
    {"xCoords":"player.x","yCoords":"player.y","zCoords":"player.z"} - к примеру, если хотите строки передать.
    тут можете проверить что все правильно парсится.
    ну а дальше уже проще - работайте с джисоном как в документации сказанно.
    Ответ написан
  • Как лучше сохранять уровни в Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Префаб если грубо это куцый и обрезанный формат Сцены в юнити, просто объект сериализованный.
    В случае со сценой:
    - там проще с памятью (при переходах Юнити сама пробует удалить и выгрузить неиспользуемое)
    - так же в сцене можно отдельно настроить свет и запечь (свет отражения и тд) (и скаибокс сюда же)
    - встроенные методы в юнити с загрузкой (и в том числе ассинхронной)
    это так , что сразу вспомнилось.
    А по сути если у вас все работает и на устроистве с производительностью и памятью проблем нету (из за большого количества xml) - то вполне себе вариант сделать как у вас.
    Ответ написан
    Комментировать
  • Как сделать скрипт, чтобы проходить препятствия, как на этом примере?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Есть (как уже указал TheTalion) Rigidbody
    Так же есть MeshCollider, который сделает вам коллайдер по форме меша.
    Но тут есть проблема в том что мешКоллайдер по производительности и "адекватности" - плохая идея.
    Вот вам еще на мануал ссылка, там про склеику коллаидеров, какие друг с другом взаимодеиствуют и прочее полезное .
    По сути хорошим тоном было бы из примитивных BoxCollider сделать стены для вашего лабиринта, они все равно будут у вас static и "склеятся в сцене", так что с производительностью проблем быть не должно.
    Ответ написан
  • Почему не активируется объект после функции ***.gameObject.SetActive(true);?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    за вызовом childObj.gameObject прячется по сути childObj.FindObject(), а поиск не найдет отключенные объекты.
    Сохраните ссылку сразу на GameObject ,а не на Transform
    Ответ написан
  • Когда начать работу над сохранением прогресса в игре?

    MrMureno
    @MrMureno
    VR for all
    так прям если совсем по хорошему, то конечно просто держать в голове надо бы что именно для геимплея важно сохранить. что сериализовать и тд.
    И не заморачиваясь особо с самим сохранением, защитой сеивов и тд. просто отдавать себе отчет что вот эти вот парочку переменных и вот здесь еще инвентарь и вот тут положение на карте - лучше повыделять в отдельные адаптеры и потом удобно через них работать. хоть локальный сеив , хоть с сервера потом его получай.

    То есть если в кратце, проэктировать с оглядкой на то что будете сохранять, а реализацию сохранений можно отложить на потом.
    Ответ написан
    1 комментарий
  • Почему Canvas в Unity не видит импортированные картинки?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Я просто для прояснения оставлю здесь это.

    TheTalion: это называется не формат изображения, а настроики импорта текстур(просто чтоб люди не путались)

    Канвас работает с спраитами, для этого вам правильно советуют выбрать настроики импорта для текстуры корректные.

    Ну и так из общего, юнити все текстуры, какой формат ей не "скармливай"(хоть psd , хоть tga, хоть jpeg), хранит в своем формате текстур, зависящем от настроек импорта.
    Ответ написан
    Комментировать
  • Как исправить CS0119?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    А теперь по делу.
    transform.rotation = Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));
    Вы СОЗДАЕТЕ объект типа Quaternion , а при создании объектов используется new (выделение памяти и тд и тп).
    тоесть должно бы быть
    transform.rotation = new Quaternion (new Vector3 (transform.rotation, transform.rotation, rotation));

    Если же все таки вы используете не новый созданный объект, а хотите просто метод над кватернионом , то было бы
    Quaternion.НужныйМетод(параметры метода). а в вашем случае вы использовать пробуете конструктор объекта (параметры для него) без выделения как такового объета

    Многовато повторений и так уже, но повторюсь - вам бы какой нибудь курс "Основы программирования" в обязательном порядке
    Ответ написан
    1 комментарий
  • Направление 2D объекта на курсор Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Положение курсора вы знаете и так - Input.mousePosition
    Получить точку в "мире игры" - Camera.ScreenToWorldPoint

    А поворачивать объект - Transform.LookAt
    Ответ написан
    Комментировать
  • Как убрать меню настроек игры Unity?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    File -> Build Settings -> Player Settings

    Справа ищем подменю Standalone Player Settings Ставим значение Disabled у опции Display Resolution Dialog.
    Раньше так было, может куда перенесли.

    И так к слову гугл выдает ответ на это - первое же ссылкой, если уточнить что это не меню настроек, а стартовое меню при сборке PC.
    Ответ написан
    Комментировать
  • Как скомпилировать игру на Mac для Windows?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    Все верно, такого пункта там и не будет (если не установлены и доступны компоненты). Точно проблемно собрать приложение под Mac и iOS из под Windows.

    Не знаю как вы проверите и запустите его, но можете переустановить юнити , не забыв установить галочки для
    "... Windows/Linux/IOS components to be able to build them..."

    Тогда и сможете из под Mac собрать виндовый exe.
    Ответ написан
    3 комментария
  • Unity3d, из-за чего происходят ,указанные ниже баги, при смене платформы?

    MrMureno
    @MrMureno Куратор тега Unity
    VR for all
    не работал с плеймейкером, но выглядит так, будто на отрыв пальца (он же маус ап) ничего не происходит. не забываются/зануляются координаты.

    и поэтому когда ставите обратно на экран палец - происходит скачек.(он как будто считает что вы вели палец в эти координаты, как мышью)

    и вообще работа с тапами и с мышкой очень сильно отличается) привыкайте к этой мысли.
    Мышь как минимум всегда существует. не бывает две мыши и тд и тп.
    Ответ написан
    Комментировать