C# Unity光线投射标记而不是图层
我做了一个游戏,我使用光线投射来确定玩家是否在一个物体上。我知道如何使用层来实现这一点,但我更愿意这样做,以便它检查它是否碰到带有标记的对象。代码如下:C# Unity光线投射标记而不是图层,c#,unity3d,raycasting,C#,Unity3d,Raycasting,我做了一个游戏,我使用光线投射来确定玩家是否在一个物体上。我知道如何使用层来实现这一点,但我更愿意这样做,以便它检查它是否碰到带有标记的对象。代码如下: isObject = Physics2D.Linecast (this.transform.position, groundedEnd.position, 1 << LayerMask.NameToLayer ("Object")); isObject=Physics2D.Linecast(this.transform.pos
isObject = Physics2D.Linecast (this.transform.position, groundedEnd.position, 1 << LayerMask.NameToLayer ("Object"));
isObject=Physics2D.Linecast(this.transform.position,groundedEnd.position,1您可以使用以下代码:
RaycastHit2D h = Physics2D.Linecast(p1, p2);
if(h.collider.tag == "YOUR_TAG")
{
//Do your stuff
}
没有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
}
}
这似乎不起作用,它没有意识到我用那个标记击中了对象。没有办法替换“否”。用层过滤光线投射对象的能力来自于这样一个事实,即层的数量有限,这允许unity保持一个方便的数据结构(我假设)但是,您可以拥有任意多的标记,这将无法达到此数据结构的优化目的。您还可以使用OnCollisionInter2D
事件来检测2D碰撞