Четверг, 21 Ноября 2024, 19:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как взаимодействовать UI с предметами?
BassPiraT92Дата: Понедельник, 28 Октября 2019, 19:50 | Сообщение # 1
участник
Сейчас нет на сайте
Есть предмет на сцене, как только игрок подходит, нужно через button уничтожить его, как реализовать?



Сообщение отредактировал BassPiraT92 - Понедельник, 28 Октября 2019, 21:07
DymkensДата: Вторник, 29 Октября 2019, 16:19 | Сообщение # 2
почетный гость
Сейчас нет на сайте
1. В объект персонажа нужно добавить триггер (зону, в которой будет искаться объект для уничтожения) как на рисунке рис1.

2. Объектам, которые можно уничтожать надо дать соответствующий тег, например "RedBox".
3. На триггер из 1 пункта добавляем скрип:

4. На кнопку вешаем триггер со скриптом и выбираем функцию "DestroyGameObject", как на рис2.


Важно, что бы тег в скрипте и на объектах совпадал. И из кода можно убрать [SerializeField], это чисто для отслеживания через Unity.
Не уверен, что это самый оптимальный способ, но должен работать.


Моя первая игра - MilvusX

Сообщение отредактировал Dymkens - Вторник, 29 Октября 2019, 16:24
BassPiraT92Дата: Среда, 30 Октября 2019, 06:45 | Сообщение # 3
участник
Сейчас нет на сайте
Dymkens, спасибо ОГРОМНОЕ!!!!!!!!!!!!!! ++++

Вот какой скрипт получился и работает на ура!
Код
using UnityEngine;
using UnityEngine.UI;

public class ItemAdder : MonoBehaviour
{
    [SerializeField] Button ButtonUse;
    [SerializeField] GameObject ItemGO;
    Inventory _inventory;

    private void Start()
    {
        _inventory = GameObject.Find("[GM]").GetComponent<Inventory>();
    }

    private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.tag.Equals("Item"))
        {
            ButtonUse.gameObject.SetActive(true);
            ItemGO = other.gameObject;
        }
    }
    private void OnTriggerExit(Collider other)
    {
        if (other.gameObject.tag.Equals("Item"))
        {
            ButtonUse.gameObject.SetActive(false);
            ItemGO = null;
        }
    }
    public void AddItem()
    {
        _inventory.AddItem(ItemGO.GetComponent<Item>());
        ItemGO.SetActive(false);
        ButtonUse.gameObject.SetActive(false);
        ItemGO = null;
    }
}


Сообщение отредактировал BassPiraT92 - Среда, 30 Октября 2019, 12:37
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг