Unity - 在禁用和启用

时间:2016-09-21 19:33:16

标签: c# unity3d collision

我有一个球员,还有一个围着他的盾牌。当存在盾牌时,它会阻挡枪支射弹。我的CollisionEnter代码是

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

如果我在默认情况下启用了已启用屏蔽的关卡,那就完全没问题了。它可以阻挡伤害,射弹消失。但是,如果我从开始就禁用它然后启用它,那么......无论如何都会伤害我。即使“盾牌”仍然标记为Collider2D,并且启用了Collider。我不知道该怎么做。谢谢你的帮助!

这是我的玩家属性的图像: enter image description here

这是禁用/启用盾牌后不正当行为的GIF: enter image description here

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

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);
        //}


        }

但它确实正常工作 - 从一开始就启用它没有问题。只有在启动关卡时没有立即唤醒它才会发生。

1 个答案:

答案 0 :(得分:0)

我尝试了几次并且它似乎确实已经修复了 - 所以,出于某种原因,我在IsTouching中询问的对象需要一个RIGIDBODY。我仍然不明白,因为如果我开始使用盾牌游戏,它会完美无缺!尽管如此,这解决了它!

谢谢大家!