我想检查由线性渲染器创建的线是否与游戏对象碰撞。我尝试向boxenderenderer添加boxcollider2d,edgecollider2d组件,但是不起作用。这条线从上到下移动。游戏对象也有一个boxcollider。
更新游戏对象检查器的屏幕截图
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;
答案 0 :(得分:1)
我能想到的两个可能的问题:
2D和3D碰撞器不可能碰撞和交互。您似乎在屏幕快照中选择的那个对象上使用的是new targetType()
(3D)而不是T
。您提到您尝试在行中使用typedObject
和BoxCollider
,它们都是2D碰撞器,不会与3D碰撞器碰撞。
下面是汇总对撞机交互(不包括触发器)的表。
在碰撞中,您始终至少需要一个对象才能拥有BoxCollider2D
组件。对于其他对象,您是否具有静态对撞机,常规BoxCollider2D
或运动型EdgeCollider2D
将取决于您如何移动/操作对象。
如果直接移动对象(通过代码在每一帧中设置其位置),则该对象应为Rigidbody
,并且启用Rigidbody
。
如果要设置对象的速度或通过物理力对其进行操作,则它应该是常规的Rigidbody
。
如果对象永不移动,则通常应为静态对撞机(不带Rigidbody
的对撞机)。