[英]Unity2D objects, click on specific object to destroy
我一直在环顾四周,无论我怎么做,我似乎都无法正常工作。 我基本上需要通过单击某个游戏对象来删除该游戏对象的运行状况,但我无法注册该对象,因此无法单击它,这是我的代码;
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只是为了表明我确实在击打该对象,如果它能正常工作)
3D Raycast不适用于2D对撞机。 正如Salvon建议的那样,您可以在可单击对象中使用OnMouseDown()函数。
您还可以使用Physics2D.OverlapPoint()对2D对象进行“投射”。 您可以将相机的ScreenToWorldPoint()函数的XY部分用于此方法。
如前所述,2d对撞机不适用于3d射线投射。
传统上2D对撞机也不支持与3d相同的所有功能,并且甚至经常会遇到问题-正是由于这个原因,许多人说您应该对所有事物都使用3d对撞机,并使用以下方式将其锁定到位置(通常为z = 0
)一个脚本。 这是如此普遍,以至于Unity 5的RigidBody都支持“锁定尺寸”参数,以防止对象沿特定尺寸(通常为Z)移动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.