Задать вопрос
Студент. Работаю над некоммерческой 3D сюжетной игрой: The Swap: Engage https://ananasikdev.github.io/AnanasikGames/
Девлоги про эту игру: https://www.youtube.com/channel/UCeZG4B_HLpamjCuPP...
Мой сервер discord: https://discord.gg/e8Cv9BuhvT
Контакты
Местоположение
Россия

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (22)
  • Что делать если onWall не хочет проверятся?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Физика в Unity устроена так, что для проверки столкновений проверяются все объекты попарно, согласно матрице столкновений. Так вот, для работы OverlapCircle и других методов для работы с физикой требуется rigidbody (или в твоем случае rigidbody2d) хотя бы на одном из объектов пары. А еще возможно, что у тебя в матрице столкновений (Edit->ProjectSettings->Physics2D в самом низу) отключено пересечение слоев этих объектов.
    Ответ написан
    Комментировать
  • Как выровнять размер спрайта по сетке?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Можно создать Image и в поле спрайт положить нужную картинку.
    Ответ написан
    Комментировать
  • Как сделать экран поражения корректно?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Ну просто напишите условие, что если игрок умер, то включать экран поражения, если враг - то нет. Для этого либо создавать отдельный скрипт для игрока и врагов, либо же при вызове метода TakeHit указывать, кто именно вызывает его.
    Ответ написан
    2 комментария
  • Как определить что под одним коллайдером находится другой?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    В принципе есть 2 варианта:
    1. Создать скрипт, повесить его на все создаваемые Вами объекты. В нем объявить метод OnCollisionEnter или OnTriggerEnter. При использовании этих функций также есть доступ к пересеченному объекту. Оттуда уже можно сделать все необходимое. (Рекомендую этот способ)

    2. Использовать одну из функций: Physics.Raycast, Physics.Spherecast и т.п. Raycast позволяет проверить только одно направление (можно и несколько, но для этого есть другие способы). Spherecast позволяет получить все
    пересеченные объекты в заданном радиусе.

    Надо также понимать, что работа с коллайдерами - это работа с физикой, а для этого необходим компонент Rigidbody (хотя бы на одном объекте из пары, в Вашем случае лучше иметь на всех). Можно также отключить использование гравитации, чтобы не мешала.

    P.S.: функция Instantiate имеет следующую перегрузку: GameObject Instantiate(GameObject obj, Vector3 position, Quaternion rotation, Transform parent), которая позволит объединить 3,4,5 строчки так:

    CellX[Num] = Instantiate(
                          objectX, 
                          new Vector3(x, y, 1f), 
                          objectX.transform.rotation, 
                          ObjectBoardCells.transform) 
                          as ObjectX;
    Ответ написан
    Комментировать
  • Как сделать показ наград выбитых из сундука?

    AnanasikDev
    @AnanasikDev
    Инди разработчик игр
    Просто сделай префаб для "карточки" (элемента), из кода его создавай в нужном месте, меняй параметры и все. Можно это сделать в цикле, там же на основе текущего индекса менять позицию
    Что-то вроде:
    [SerializeField] Item itemPrefab;
    [SerializeField] Transform Canvas;
    Item[] itemsGot;
    void DrawAll()
    {
     for (int i = 0; i < itemsGot.Length; i++)
     {
     Item item = Instantiate(itemPrefab, new Vector2(300 + i*80, 500), Quaternion.identity, canvas).GetComponent<Item>();
     item.params = itemsGot[i].params;
     }
    }
    Ответ написан
    2 комментария