Unity2D对象,单击要销毁的特定对象

时间:2015-03-27 14:20:25

标签: c# unity3d

我一直在环顾四周,无论我怎么做,我似乎都无法工作。我需要通过点击该对象基本上删除gameObject的健康状况,但我无法注册,我可以点击它,这是我的代码;

if (Input.GetMouseButtonDown(0)) {
        RaycastHit hit;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out hit))
            if (hit.collider.tag == "Player")
        {
                Debug.Log ("Hit " + hit.collider.tag);
        }
    }

很抱歉,如果这是一个重复的问题,我真的需要帮助! (Debug.Log只是表明我实际上是在击中对象,如果要工作的话)

2 个答案:

答案 0 :(得分:1)

3D Raycast不适用于2D对撞机。正如Salvon建议的那样,您可以在可点击的对象中使用OnMouseDown()函数。

你也可以使用Physics2D.OverlapPoint()来"施放"针对您的2D对象。您可以使用相机的ScreenToWorldPoint()函数的XY部分来实现此方法。

答案 1 :(得分:0)

如上所述,2d对撞机不适用于3D光线投射。

2D对撞机传统上也不支持与3d相同的所有功能,甚至经常会遇到问题 - 正是因为这个原因,很多人说你应该只使用3d对撞机,并将它们锁定到位(通常是{{ 1}})使用脚本。这是非常常见的做法,即使Unity 5的RigidBody也支持“锁定尺寸”参数,以防止对象在某些尺寸(通常是Z)方面移动。