繁体   English   中英

Unity2D对象,单击特定对象以销毁

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM