• В чем разница между получением доступа к компоненту объекта через .transform и .gameObject?

    Denkuwus
    @Denkuwus
    15 y.o
    По сути строки делают одно и тоже, и на выходе будет одно, разница лишь в том что первая строка обращается к компоненту Player через компонент Transform, а вторая строка обращается к компоненту Player напрямую через GameObject
    Ответ написан
    2 комментария
  • Как нарисовать сетку на трехмерной поверхности для пошаговой стратегии на движке Unity?

    Lunali
    @Lunali
    скрытна.
    так в чем проблема? на самом деле у тебя нет 3 Д , у тебя как раз 2 Д ))))))
    у тебя как раз тайлы ))

    Вариант решения один
    1. Реж всю платформу на тайлы .....и собирай мир с тайлов
    2. Собери соты из независимых обьектов и наложи сверху

    Можно посмотреть вот это видео тут точно есть ответ на твой вопрос https://www.youtube.com/watch?v=nDCFajF49U4

    С чего ты взял что у тебя 3 Д? у тебя плоскость которую можно разбить точно так же как любая 2 Д

    У тебя все теже вершины системы кординат которые как раз работают точно так же как тайлы ......

    Сетка это лишь условность , по факту у тебя просто вершины кординат и заданые точки в списках .....

    у тебя не чего не меняетсья от того что ты используешь 3 Д кроме еще одной токи кординат . Все то же самое повернутсья и идти в ту или иную точку кординат .... Все то же самое что 2 Д вид сверху

    вот смотри это линейный граф https://youtu.be/ze86jMNDzlw , и он будет работать где угодно .....смотри я просто генерирую вершины и не важно в 2 Д или 3 Д или даже в 4 Д даже в 6 Д это будет работать

    нету такой вещи как 3 Д для сетки ....сетка это 2 Д и работает оно везде
    Ответ написан
  • Unity 3D в проекте некорректно отображаются материалы из Asset Store, как пофиксить?

    GavriKos
    @GavriKos Куратор тега Unity
    Розовый цвет - это ошибка материала. Смотрите какой там материал, смотрите что за ошибка. МОжет рендер-пайплайн не тот, например
    Ответ написан
    1 комментарий
  • Какой выбрать план обучения для разработки на Unity?

    @hermer29
    Вкачивать можно в разные ветки:
    * Профпригодность - способность решать задачи. Находишь самую часто встречающуюся механику из первых 10 игр в плей маркете и думаешь как её реализовать, гуглишь об этом, запоминаешь как реализовать, запоминаешь с какими проблемами столкнулся. Кроме механики, берешь первую попавшуюся не слишком сложную по времени игру и делаешь её от начала до конца, воруя ассеты из интернета - вот это вообще супер метод.
    * Способность искать новое, анализировать какие у тебя проблемы и что может их решить - оно сильнее всего прокачивается опытом (ты можешь попасть в хорошую организацию, в которой есть наработанный рабочий опыт, который они сохраняют, тогда ты быстро станешь носителем этого опыта и очень быстро будешь расти). Вот недавно на опыте, делаешь web gl игру. Сделал билд, отправил тестеру - он просит сделать фичи для тестирования, забиваешь на то что он говорит - билд идёт минут 10-20 + заливать, не хочешь время тратить, + билд блокирует разработку, издатель скорее хочет готовый проект. Скидываешь билд, издатель вносит правки, правишь, скидываешь билд и так раз 10. Эту проблему решает CI/CD, ты даёшь команду на билд и дальше разрабатываешь. То есть важно анализировать, что новое может повысить твою эффективность?
    * Смежные области - иногда чтобы стать лучшим разработчиком достаточно разбираться в какой то смежной области. К примеру основы геймдизайна, графики, понимание бизнес процессов, веб программирования (в наше время веб игр очень актуально)
    Надо понимать закон мёрфи, если что-то плохое может случиться, то оно обязательно случится. Иногда в важном месте не сделав интерфейс вместо класса, и сделав к примеру ситуацию где от этого класса в разных контекстах хотят разные вещи, ты попадёшь в ловушку. Или к примеру заказчик попросил вырезать фичу, а ты взял и всё удалил вместо того чтобы добавить тумблер - молодец, теперь надо запускать редактор кода и вспоминать где ты что закомментил. Тоже самое с использованием гита
    Ответ написан
    Комментировать
  • Можно ли переместить центр объекта?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Вам нужен якорь - не специальный компонент, а, скорее дополнительная точка в пространстве.

    Если под прямоугольником вы имели ввиду некий 2D/3D-объект, то вам нужно создать якорь (Create Empty) и расположить ваш объект так, чтобы якорь находился в нужном месте, после чего совершать нужные действия по трансформу уже не с объектом, а с якорем. Только не забудьте расположить объект по иерархии внутри якоря.

    Если вы хотите хотите через сцену управлять объектом с точкой-якорем, переключитеcь с соответствующий режим. Где-то сверху есть вот такой переключатель:
    6384907bc4a6c292064992.png
    Переключите левый в режим Pivot

    В случае Unity UI всё немного проще, т.к. там используется модифицированный компонент Rect Transform, имеющий свойство Pivot.
    Ответ написан
    2 комментария
  • Как проверять столкновение по слою?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Суть - будь то столкновение типа Collision или ControllerColliderHit, у обоих можно достать свойство gameObject, к которому и отосится искомое вами свойство.
    private void OnCollisionEnter(Collision c) {
    	if (c.gameObject.layer == 6) { // порядковый номер искомого слоя
    		// do anything
    	}
    }
    Ответ написан
    Комментировать
  • Как заспавнить спрайт с физикой?

    @Sannyprrod
    Зависит конечно от целей, но
    А почему бы не сделать перфаб, на который уже будут добавлены через инспектор компоненты?
    Выносишь на сцену спрайт, добавляешь на него компоненты Rigidbody2D и BoxCollider, перетаскиваешь из окна Hierarchy в папку проекта, удаляешь со сцены. Дальше инстанцируешь этот префаб в нужный момент и он сразу будет падать и сталкиваться без лишних добавлений компонентов. Хоть и не большой, но потенциальный перформанс, и всё же лучше сразу учиться писать хоть немного оптимальней.
    Ответ написан
    Комментировать
  • Как проверить столкновение с объектом по его тегу?

    @Sannyprrod
    private void OnCollisionEnter(Collision collision)
    {
          if (collision.gameObject.CompareTag("FirstPart"))
          {
                Destroy(gameObject);
          }
    }
    
    Для 2D:
    private void OnCollisionEnter2D(Collision2D col)
            {
                if (col.gameObject.CompareTag("FirstPart"))
                {
                    Destroy(gameObject);
                }
            }

    +- вот так, но лучше, по возможности, искать решения без использования тегов, теги в основном bad practice
    Ответ написан
    2 комментария
  • Как сместить центр квадрата вверх в BoxCast2D?

    @Sannyprrod
    private bool IsCrashed()
    {
        Vector3 offset = new Vector3(0, 0.1f);
        return Physics2D.BoxCast(playerCollider.bounds.center + offset, playerCollider.bounds.size, 0f, Vector2.down, .1f, groundMask);
    }

    + offset или -offset в зависимости от нужного вектора смещения
    Ответ написан
    1 комментарий
  • Чем отличаются типы данных в С#?

    freeExec
    @freeExec
    Участник OpenStreetMap
    1. Я бы по началу не парился где там лежат значения. Тут главное надо уяснить, что у тебя хранится в переменной, например когда ты присваиваешь её значение другой переменной.
    Значимые типы, как поля класса, лежат вместе с классом. А на стеке лежат только локальные переменные. Да и там есть куча нюансов и оптимизаций.
    2. Указатели используются как часть работы с неуправляемым кодом. Некая попытка протащить сюда ещё и C.
    Ответ написан
    4 комментария