我使2个游戏对象彼此接近。这些对象具有“刚体2D”和“碰撞体2D”。碰撞时,我想让接触点位于对撞机的外部。这些可以达到8分。现在,我的对象正在碰撞,但是我只收到一个接触点,这似乎是接触点或重叠区域的平均值。 我如何获得每一分?
private ContactPoint2D[] contacts = new ContactPoint2D[10];
void OnCollisionStay2D(Collision2D collision)
{
collision.collider.GetContacts(contacts);
foreach (ContactPoint2D contact in contacts)
{
Vector2 hitPoint = contact.point;
if (hitPoint != testVector)
{
TestMarker.transform.position = new Vector3(hitPoint.x, hitPoint.y, -5.0f);
}
Debug.Log(hitPoint.ToString());
};
}
因此,如下面的图像所示,我想跟踪两个对象的接触点。绿色方块从两个对象第一次相互碰撞的点开始,然后像平均值或sth一样移动到中心。 这是正常行为吗?
我该如何获取所有联系点?
答案 0 :(得分:0)
从文档中
您应该传递一个足够大的数组,以包含您要返回的所有联系人
因此,您需要检查数组大小是否合适。
int count = collision.collider.GetContacts(contacts);
if(count > contacts.Length)
{
Array.Resize(ref contacts, count);
collision.collider.GetContacts(contacts);
}