如何使用SetActive禁用精灵(false)

d d*_*doe 0 c# unity-game-engine

我有一个简单的代码,当玩家输入一个触发器时显示一个精灵:

ps:精灵不在GUI上

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Player")
    {
        ItemCard.SetActive(true);
    }
    else
    {
        ItemCard.SetActive(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我SetActive(false)没有工作,精灵仍在展示.我在伪造什么?

Pri*_*ens 5

我想在这里走出去猜猜,你试图做的是当你的触发器显示一张牌并让它在你离开时消失?

有一种方法OnTriggerExit需要它.试试这个:

void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Player")
    {
        ItemCard.SetActive(true);
    }

}

void OnTriggerExit(Collider other)
{
    if (other.gameObject.tag == "Player")
    {       

        ItemCard.SetActive(false);
    }

}
Run Code Online (Sandbox Code Playgroud)

我说这个的原因是因为你的方法只会将对象设置为非活动状态,如果进入它的对手不是玩家.我可能是错的,也许这就是你想要的东西,但如果是这样的话,别的就不需要了.祝好运!lemme知道这是否适合你!

用你原来的方法你基本上说:

如果玩家走进演出卡,除了玩家之外的任何东西都会碰到隐藏卡

所以你需要别的东西与它碰撞才能让它消失