• Как сделать показ наград выбитых из сундука?

    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 комментария
  • Как определить что под одним коллайдером находится другой?

    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;
    Ответ написан
    Комментировать