zoukankan      html  css  js  c++  java
  • 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都要去判断的。

  • 相关阅读:
    ECharts 上传图片Example
    SpringBoot|mybatis-maven依赖
    SpringBoot|web应用开发-CORS跨域资源共享
    IDEA|自动生成序列化ID
    SpringBoot|自定义业务异常使用
    SpringBoot|常用配置介绍
    SpringBoot|多环境配置
    SpringBoot|其他常用注解
    SpringBoot|以jar包形式运行springboot服务
    SpringBoot|restfull风格的接口实现方式
  • 原文地址:https://www.cnblogs.com/xwwFrank/p/4431270.html
Copyright © 2011-2022 走看看