Unity Spine碰撞框形狀沒法跟隨改變

最近使用Spine的時候,Spine在動畫編輯中修改了碰撞框形狀,導入到unity中使用BoundingBoxFollower腳本,發如今Spine碰撞框形狀修改的時候,不會自動跟隨更新。ide

後來到Spine官方論壇查到資料才發現:動畫

大概意思就是Unity的PolygonCollider2D設計初衷不支持動態改變形狀,若是改變的話將會耗費大量的計算和意想不到的錯誤。若是非要修改的話,Spine sdk的數據是正常的,能夠本身進行變動。可是沒有說如何變動。查看了源代碼,嘗試出來了,設計

在BoundingBoxFollower中添加以下代碼能夠刷新碰撞塊形狀:3d

[ContextMenu("UpdateBoundingBox")]
void UpdateBoundingBox(){
	var worldVerts = new float[CurrentAttachment.Vertices.Length];
	CurrentAttachment.ComputeWorldVertices(slot, worldVerts);
	int worldVertsLength = worldVerts.Length;

	int bufferTargetSize = worldVertsLength >> 1;
	Vector2[] buffer = new Vector2[bufferTargetSize];

	var floats = worldVerts;

	Vector3 vert = Vector3.zero;
	for (int i = 0, n = worldVertsLength >> 1; i < n; i++) {
		int j = i * 2;

		vert.x = floats[j];
		vert.y = floats[j + 1];
		vert.z = 0;

		float aaa = vert.x;
		float bbb = vert.y;
		Slot.Bone.WorldToLocal (aaa, bbb, out aaa, out bbb);
		vert.x = aaa;
		vert.y = bbb;

		buffer[i] = vert;
	}
	CurrentCollider.SetPath (0, buffer);
}