untiy中不規則物體添加collider,比如地圖


方法一:直接使用編輯器來做

using UnityEngine;
using UnityEditor;
using System.Collections;

/// <summary>
/// 在給不規則sprite添加boxCollider的時候,box的藍色邊框不顯示,要是規則的物體添加會box的藍色邊框會很好的顯示出來,
/// 意味着box很好的裹住了物體,不規則的物體添加box時用的是Polygoncollider,但是沒有很好的裹住物體,原來是NGUI默認創建的貼圖和精靈的scale 都是1, 而所有的Collider都是根據GameObject的scale去算的。所以它太小了
/// ,小到了你的眼睛都完全看不到。為了方便編輯還是寫一條簡單的腳本來創建Polygon Collider2D。
/// </summary>
public class AddPolygonCollider2D_Demo : Editor
{
    [MenuItem("NGUI/Attach/PolygonCollider2D")]
    public static void AddPolugonCollider2D()
    {
        if(Selection.activeGameObject != null)
        {
            foreach(GameObject go in Selection.gameObjects)
            {
                UIWidget widget = go.GetComponent<UIWidget>();
                if(widget != null)
                {
                    PolygonCollider2D polygoncllider = go.GetComponent<PolygonCollider2D>();

                    if(polygoncllider == null)
                    {
                        polygoncllider = go.AddComponent<PolygonCollider2D>();
                    }

                    Vector2[] vectors = new Vector2[4];
                    int widthHalf = (widget.width >> 1) + 20;
                    int heightHalf = (widget.height >> 1) + 20;
                    vectors[0] = new Vector2(-widthHalf, -heightHalf);
                    vectors[1] = new Vector2(widthHalf, -heightHalf);
                    vectors[2] = new Vector2(widthHalf, -heightHalf);
                    vectors[3] = new Vector2(-widthHalf, -heightHalf);
                    polygoncllider.points = vectors;
                }
            }
        }
    }
}

代碼寫完之后使用,點擊shift和鼠標左鍵進行編輯collider的范圍

 

方法二:

直接在物體的inspects面板進行修改,首先添加polygoncollider來,然后在面板中點擊右上角的小圖標,選擇debug,進行如編輯

 

提示:

但是NGUI現在的代碼是不支持PolygonCollider2D的。原因是NGUI用的是3D射線,而PolygonCollider用的是2D射線,射線是需要每一幀Update都要去判斷的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM