首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unity -禁用和启用后,在冲突检查中不再考虑Collider2D

Unity -禁用和启用后,在冲突检查中不再考虑Collider2D
EN

Stack Overflow用户
提问于 2016-09-22 03:33:16
回答 1查看 132关注 0票数 1

我有一个球员,还有一个盾牌包围着他。当防护罩存在时,它可以阻挡枪弹。我的CollisionEnter代码是

代码语言:javascript
复制
if ((col.collider.gameObject.tag == "hurt")  && (col.collider.IsTouching(shield) == false))
{hurt();}

这是非常好的,如果我开始的水平已经从默认启用的盾牌。它能阻挡伤害,射弹消失。但如果我从一开始就禁用它然后再启用它,它是...不管怎么说都会伤害到我。即使“盾牌”仍然被标记到Collider2D上,并且该对撞机已启用。我不知道该怎么办。感谢您的帮助!

这是我的播放器属性的图像:

下面是禁用/启用屏蔽后的不正确行为的GIF:

这是碰撞检查的完整代码。

代码语言:javascript
复制
void OnCollisionEnter2D(Collision2D col)
{   
    if ((col.collider.gameObject.tag == "hurt_insta") && (col.collider.IsTouching(shield) == false))

    {



        Instantiate(prefab,transform.position,transform.rotation);
        transform.position = new Vector3 (300, 300, transform.position.z);
        Vector2 tempxy = new Vector2 (transform.position.x, transform.position.y);
        GameObject.Find ("Main Camera").GetComponent<CameraFollow> ().target = null;
        PlayerSolid.GetComponent<Renderer> ().enabled = false;
        StartCoroutine (Death_prodleva4bit ());


    }


    if ((col.collider.gameObject.tag == "hurt")  && (col.collider.IsTouching(shield) == false))
    { 


        Instantiate(prefab,transform.position,transform.rotation);

        //if (PlayerSolid.transform.localScale.y > 0f) { 
        //  PlayerSolid.transform.localScale -= new Vector3 (0f, 0.36f);
        //} 

        //if (actual_bit == player_bits [8]  ) {
        if (n > 6) {
            transform.position = new Vector3 (300, 300, transform.position.z);
            Vector2 tempxy = new Vector2 (transform.position.x, transform.position.y);
            GameObject.Find ("Main Camera").GetComponent<CameraFollow> ().target = null;
            PlayerSolid.GetComponent<Renderer> ().enabled = false;



            StartCoroutine (Death_prodleva4bit ());
        } 

 else {
            hit = true;
            HURT (2);

            //if (n < 7) {
        //      HURT(3);
        //}


        }

但它肯定是按原样工作的--当它从一开始就被启用时,它就没有问题。它只有在启动关卡时没有立即唤醒时才会发生。

EN

回答 1

Stack Overflow用户

发布于 2016-09-22 20:30:08

我又试了几次,它似乎真的被修复了-所以,出于某种原因,我在IsTouching中询问的对象需要一个RIGIDBODY。我仍然不理解它,因为如果我开始游戏时带着盾牌,它就能完美地工作!尽管如此,还是解决了这个问题!

谢谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39625110

复制
相关文章

相似问题

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