碰撞时发送SendMessage?

时间:2019-06-11 02:55:51

标签: c# unity3d

我正在尝试使角色与资产配合使用。我的角色有打孔动画。我想要在打孔时破裂。

我已经尝试过OnCollisionEnter和OnTriggerEnter。但是使用“ OnMouseDown”和Raycasts销毁对象的原始脚本。

        if(punched){
            RaycastHit hit = new RaycastHit();
            Ray ray = Camera.main.ViewportPointToRay (new Vector3(0.5f,0.5f,0.0f));
            if (Physics.Raycast (ray, out hit)){
            ////    SEND A MESSAGE DAMAGING THE OBJECT HIT
                hit.collider.gameObject.SendMessage("Damage", 1f, SendMessageOptions.DontRequireReceiver);          
            }
        }
    }

当我的对撞机与一个物体而不是光线投射系统碰撞时,我希望它能够正常工作。当我在播放器上分配的对撞机碰到需要打破的物体时,就差不多了。请帮助,我很困惑:o

3 个答案:

答案 0 :(得分:1)

尝试了不同的方法之后,我可以使用 OnTriggerEnter 来完成我想要的事情。它就像一个魅力。 ew。

答案 1 :(得分:0)

我觉得您已经想不通了。 为什么不只是在检测碰撞的游戏对象上放一个脚本?

void OnCollisionEnter (Collision col) 
{
          if (col.gameObject.CompareTag("Fist"))
              Debug.Log ("I have broken");
}

答案 2 :(得分:0)

查看您的脚本的变体为:

void OnCollisionEnter(Collision collider) 
{
      collider.gameObject.SendMessage("Damage", 1f, SendMessageOptions.DontRequireReceiver);
}

面团,您不应该使用SendMessage,但是,嘿。