unity spine boundingbox 碰撞檢測
阿新 • • 發佈:2019-02-17
1、在spine的物件下建立物理骨骼並選擇”follow”
2、如果該spine動畫已經由美術添加了BoundingBoxes,那在相應的骨骼節點就可以自動生成多邊形碰撞體,點選上圖(weapon2)
3、由於專案要求可以替換武器,也就是更換了spine的skin之後,碰撞體也要同時重新整理
功能程式碼段
private void freshWeapon(){
Destroy(weaponBone.transform.FindChild("[BoundingBox]weapon2").gameObject);
// 因為這裡的AddBoundingBox不會自動重新整理已經存在的屬性值,所以要先把之前的destroy掉
weaponBone.AddBoundingBox(skeleton.skin.Name,"weapon2","weaponBJ");
weaponBone.transform.FindChild("[BoundingBox]weapon2").gameObject.AddComponent<WeaponCollision>();
// weaponBone.DoUpdate(SkeletonUtilityBone.UpdatePhase.Complete); 這個重新整理函式不呼叫也沒區別
}
/// <summary>
/// 更換套裝
/// </summary>
/// <param name="skeleton"></param>
/// <param name="skinName">套裝的名字</param>
public void DressUp(Skeleton skeleton,string skinName)
{
skeleton.SetSkin(skinName);
}
void Update () {
if (Input.GetKeyDown(KeyCode.A)){
SpineTool.Instance.DressUp(skeleton,"weapon" );
freshWeapon();
}
else if (Input.GetKeyDown(KeyCode.B)){
SpineTool.Instance.DressUp(skeleton,"weapon2");
freshWeapon();
}
else if (Input.GetKeyDown(KeyCode.C)){
SpineTool.Instance.DressUp(skeleton,"weapon3");
freshWeapon();
}