Unity Raycasting标签而不是图层

时间:2015-05-11 09:04:25

标签: c# unity3d raycasting

我制作了一个游戏,我使用光线投射来确定玩家是否在物体上。我知道如何使用图层来做到这一点,但我宁愿做到这一点,以便检查它是否遇到带有标记的对象。下面是代码:

  isObject = Physics2D.Linecast (this.transform.position, groundedEnd.position, 1 << LayerMask.NameToLayer ("Object"));

因此,我不想与名为“Object”的图层掩码进行比较,而是检查它是否遇到带有标记的对象,但我不知道用什么来替换LayerMask。

2 个答案:

答案 0 :(得分:1)

您可以使用此代码:

 RaycastHit2D h = Physics2D.Linecast(p1, p2);
 if(h.collider.tag == "YOUR_TAG")
 {
     //Do your stuff
 }

答案 1 :(得分:1)

没有2D光线投射的经验,但是在3D中检查光照的命中对象的标签是这样的,也许你可以稍微改变它以应用于2D:

RaycastHit raycastHit;
if(Physicas.Raycast(from, to , out raycastHit, maxDistance)){
Collider = raycastHitCollider = raycastHit.collider;
    if (raycastHitCollider.gameObject.tag == "Your tag here"){
    //do stuff
    }
}