RaycastHit返回地形,我想要gameobject

时间:2014-05-29 20:02:43

标签: unity3d

我有地形和球的场景。球在移动。我想检测它上面的切片。我怎样才能做到这一点? 我有这样的сode:

if (Input.touchCount > 0)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                Vector3 pos = Input.GetTouch(0).position;
                pos.y = 0.2f;
                Ray ray = Camera.main.ScreenPointToRay(pos);
                RaycastHit hit = new RaycastHit();
                if (Physics.Raycast(ray, out hit))
                {
                    timeToShoot = true;
                }
                Debug.Log(hit.transform.name);
            }
            if (Input.GetTouch(0).phase == TouchPhase.Moved)
            {
                //drag
                if (timeToShoot)
                {
                    update = false;
                    timeToShoot = false;
                    shoot(Input.GetTouch(0).deltaPosition * 5);
                }
            }
        }

在日志中我只能看到“地形”。 谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用图层蒙版过滤光线投射。如果在MonoBehavior中将变量公开为公共成员变量,则可以在检查器中指定哪些图层是图层蒙版的一部分。

public LayerMask layerMask;

然后,将其传递给你的光线投射

if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask))
{
    timeToShoot = true;
}

如果您不熟悉,可能需要阅读layers