我一直在环顾四周,无论我怎么做,我似乎都无法工作。我需要通过点击该对象基本上删除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只是表明我实际上是在击中对象,如果要工作的话)
答案 0 :(得分:1)
3D Raycast不适用于2D对撞机。正如Salvon建议的那样,您可以在可点击的对象中使用OnMouseDown()函数。
你也可以使用Physics2D.OverlapPoint()来"施放"针对您的2D对象。您可以使用相机的ScreenToWorldPoint()函数的XY部分来实现此方法。
答案 1 :(得分:0)
如上所述,2d对撞机不适用于3D光线投射。
2D对撞机传统上也不支持与3d相同的所有功能,甚至经常会遇到问题 - 正是因为这个原因,很多人说你应该只使用3d对撞机,并将它们锁定到位(通常是{{ 1}})使用脚本。这是非常常见的做法,即使Unity 5的RigidBody也支持“锁定尺寸”参数,以防止对象在某些尺寸(通常是Z)方面移动。