C# 检查linerenderer是否与游戏对象冲突
我想检查linerenderer创建的线条是否与游戏对象冲突。我尝试将boxcollider2d、edgecollider2d组件添加到linerenderer,但没有成功。这条线从上到下移动。游戏对象也有一个boxcollider 更新游戏对象检查器的屏幕截图 线渲染器将与之碰撞的游戏对象 然后在linerenderer中。我使用脚本生成一行C# 检查linerenderer是否与游戏对象冲突,c#,unity3d,C#,Unity3d,我想检查linerenderer创建的线条是否与游戏对象冲突。我尝试将boxcollider2d、edgecollider2d组件添加到linerenderer,但没有成功。这条线从上到下移动。游戏对象也有一个boxcollider 更新游戏对象检查器的屏幕截图 线渲染器将与之碰撞的游戏对象 然后在linerenderer中。我使用脚本生成一行 myLine=newgameobject(); myLine.AddComponent(); myLine.AddComponent(); lr=
myLine=newgameobject();
myLine.AddComponent();
myLine.AddComponent();
lr=myLine.GetComponent();
lr.material=新材质(Shader.Find(“精灵/默认”);
lr.positionCount=3;
lr.startWidth=.1f;
lr.endWidth=.1f;
lr.SetPosition(0,新向量3(shapePositionValues.posA,shapePositionValues.posD,-1));
lr.SetPosition(1,新向量3(shapePositionValues.posB,shapePositionValues.posE,-1));
lr.useWorldSpace=false;
我可以想到两个可能的问题:
问题1
二维和三维碰撞器不可能碰撞和交互。看起来您在屏幕截图中选择的对象上使用的是BoxCollider
(3D),而不是BoxCollider2D
。您提到您曾尝试对您的行使用BoxCollider2D
和EdgeCollider2D
,这两个都是二维碰撞器,不会与三维碰撞器碰撞
问题2
下表总结了碰撞器交互(不包括触发器)
在碰撞中,始终需要至少一个对象才能具有刚体
组件。另一个对象是否有静态碰撞器、法线刚体
或运动学刚体
,取决于您移动/操纵对象的方式
如果直接移动一个对象(通过代码设置每个帧的位置),那么它应该是启用了iskinetic
的刚体
如果设置对象的速度或通过物理力操纵对象,则对象应为规则的刚体
如果对象从未移动,则通常应为静态碰撞器(无刚体的碰撞器
).尝试将linerenderer和gameobject更改为BoxCollizedR2D组件,但仍然不起作用。@Newboy11您是否能够截屏检查您试图进行碰撞的两个对象?还忘了提到您实际上需要Rigidbody2D而不是Rigidbody,原因与您需要2D碰撞器相同。使用myLine.AddComponent()
将其添加到行中,您需要手动将其中一个添加到另一个对象中。它正在工作。但刚体会导致线条渲染器无法正确移动。将此添加到脚本中,但没有解决问题。var linerb=myLine.GetComponent();linerb.gravityScale=0;linerb.mass=0.0001f;将研究刚体。再次感谢您您是如何移动线条渲染器的?您只是通过脚本更新其位置吗?
myLine = new GameObject();
myLine.AddComponent<LineRenderer>();
myLine.AddComponent<BoxCollider2D>();
lr = myLine.GetComponent<LineRenderer>();
lr.material = new Material(Shader.Find("Sprites/Default"));
lr.positionCount = 3;
lr.startWidth = .1f;
lr.endWidth = .1f;
lr.SetPosition(0, new Vector3(shapePositionValues.posA, shapePositionValues.posD, -1));
lr.SetPosition(1, new Vector3(shapePositionValues.posB, shapePositionValues.posE, -1));
lr.useWorldSpace = false;