1. 程式人生 > >unity spine boundingbox 碰撞檢測

unity spine boundingbox 碰撞檢測

這裡寫圖片描述
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(); }