首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象设置为活动,但提醒非活动。

对象设置为活动,但提醒非活动。
EN

Stack Overflow用户
提问于 2019-08-29 10:51:47
回答 1查看 77关注 0票数 1

我正试着解决一个问题。我在玩虚拟现实游戏。我设置了一个无形的对撞机作为触发开关,从手化身,是在控制器上的其他东西在游戏中。问题是触发器是被识别的,但是设置它是活动的,根本不起作用。我会感谢你的任何建议

我尝试在update方法和on触发器方法中切换对象。在前面的update方法中,它没有从on触发器传递数据。但是,如果我将它放在触发器中,则可以识别bool,但不会将对象设置为活动对象。

代码语言:javascript
复制
public GameObject leftHand;
    public GameObject leftHandOnChest;
    public bool cprColliderLeft = false;

    void Start()
    {
        leftHandOnChest.SetActive(false);
        leftHand.SetActive(true);
    }
    void Update()
    {

    }

    private void OnTriggerEnter(Collider collider)
    {
        if (collider.tag == "CPRStart")
        {

            cprColliderLeft = true;

            if(cprColliderLeft == true)
            {
                leftHandOnChest.SetActive(true);
                leftHand.SetActive(false);
            }
        }
    }

    private void OnTriggerStay(Collider collider)
    {
        if (collider.tag == "CPRStart")
        {
            cprColliderLeft = true;

            if (cprColliderLeft == true)
            {
                leftHandOnChest.SetActive(true);
                leftHand.SetActive(false);
            }

        }
    }

    private void OnTriggerExit(Collider collider)
    {
        cprColliderLeft = false;
        if(cprColliderLeft == false)
        {
            leftHandOnChest.SetActive(false);
            leftHand.SetActive(true);
        }
    }

我的目标是将一个对象从一个活动对象切换到另一个对象。所以其中一个会从现场消失,另一个会出现。谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-30 07:07:38

我建议采用以下简化代码:

代码语言:javascript
复制
public GameObject leftHand;
public GameObject leftHandOnChest;

void Start()
{
    leftHandOnChest.SetActive(false);
    leftHand.SetActive(true);
}

private void OnTriggerEnter(Collider collider)
{
    if (collider.compareTag ("CPRStart"))
    {
        leftHandOnChest.SetActive(true);
        leftHand.SetActive(false); 
    }
}

private void OnTriggerExit(Collider collider)
{
    if (collider.compareTag ("CPRStart"))
    {
        leftHandOnChest.SetActive(false);
        leftHand.SetActive(true);
    }
}

但我想你的问题可能是一些进入/退出的连锁反应。我猜标签"CPRStart“在leftHand上--所以当进入时,就禁用它--这将导致exit被调用。

因此,我建议只禁用渲染器:

代码语言:javascript
复制
public GameObject leftHand;
public GameObject leftHandOnChest;
private MeshRenderer hand_renderer;

void Start()
{
    leftHandOnChest.SetActive(false);
    leftHand.SetActive(true);
    hand_renderer = leftHand.getComponent <MeshRenderer> ();
}

private void OnTriggerEnter(Collider collider)
{
    if (collider.compareTag ("CPRStart"))
    {
        leftHandOnChest.SetActive(true);
        hand_renderer.enabled = false;
    }
}

private void OnTriggerExit(Collider collider)
{
    if (collider.compareTag ("CPRStart"))
    {
        leftHandOnChest.SetActive(false);
        hand_renderer.enabled = true;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57708594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档