Unity Bound

原创 2016年06月01日 23:29:45

Bound:包围盒,边界框,AABB的简称,Mesh,Collider,Renderer都存在bound。(Mesh返回的是自身坐标,其余返回的是世界坐标)。


using UnityEngine;
using System.Collections;
using System.Xml;

public class TestXml : MonoBehaviour {

    public GameObject Target;

    public GameObject Target2;

    Bounds bounds;

    void Start()
    {
        bounds = Target.GetComponent<BoxCollider>().bounds;

        Debug.Log("center:" + bounds.center);//中点
        Debug.Log("Size:" + bounds.size);//bound的大小,等于extents*2
        Debug.Log("Min:" + bounds.min);//bound上最小的点,总是等于center-extents
        Debug.Log("Max:" + bounds.max);//bound上最大的点,总是等于center+extents
        Debug.Log("extents:" + bounds.extents);//圣典上翻译成广度,笔者也不清楚如何理解,它等于size/2

        //传入一个点,找离bounds最近的点,如果点在bounds上,则返回输入的点
        Debug.Log(bounds.ClosestPoint(bounds.center));
        Debug.Log(bounds.ClosestPoint(bounds.min));
        Debug.Log(bounds.ClosestPoint(Vector3.zero));

        //判断点是否在bounds上
        Debug.Log(bounds.Contains(bounds.center));
        Debug.Log(bounds.Contains(bounds.min));
        Debug.Log(bounds.Contains(Vector3.zero));

        Bounds temp = new Bounds(Vector3.zero, Vector3.one * 3);

        bounds.Encapsulate(Vector3.one);//使bound包含这个点

        bounds.Encapsulate(temp);//使bound包含参数bound

        bounds.Expand(Vector3.one * 2);//扩大包围盒

        bounds.SetMinMax(Vector3.zero, Vector3.zero);//设置最大最小点,且比单独设置min,max效率要高

        Debug.Log(bounds.Intersects(temp));//是否与参数包围盒相交

        Debug.Log(bounds.SqrDistance(Vector3.up * 2));//返回一个参数点与bound最近的距离平方;
    }

    bool DetectHit(Ray ray)
    {   
       //判断射线是否在bound上
        return bounds.IntersectRay(ray);
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0)) {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (DetectHit(ray))
            {
                Debug.Log("点中包围盒");
            }
            else {
                Debug.Log("没有点中");
            }
        }
    }
}


转载请注明出处:Mr_Jis的博客

unity 关于模型的边界框bounds

SkinnedMeshRenderer.Bounds的边界框默认是不能通过脚本修改的 在有蒙皮骨骼的模型Rig选项中改成Legacy的时候会出现这种情况,这个时候最好选择genetic导入,可以得到...
  • shenmifangke
  • shenmifangke
  • 2015年10月27日 17:04
  • 3536

unity3d中获得物体的size

以size的x方向为例 1:gameObject.renderer.bounds.size.x;//这个值的结果真实反应出有MeshRenderer这个组件的模型的尺寸。不需要再乘以localScal...
  • qq_17540945
  • qq_17540945
  • 2015年03月02日 11:36
  • 850

UGUI 计算RectTransform的Bounds

NGUIMathf里有个calculateRelativeWidgeBounds(Transform content) 的函数 用来计算 content下(包括content)的bounds  UGU...
  • mutou_222
  • mutou_222
  • 2015年08月18日 14:19
  • 1592

unity3d中获得物体的size

以size的x方向为例 1:gameObject.renderer.bounds.size.x;//这个值的结果真实反应出有MeshRenderer这个组件的模型的尺寸。不需要再乘以localS...
  • a351945755
  • a351945755
  • 2014年07月04日 15:13
  • 15474

Unity判断在物体内部和相交

在游戏开发中,有时要判断某个点是否在某个盒子里,其实Unity已经有支持的方法了,很容易就实现了.What you’re looking for is Bounds.Contains. The met...
  • thinbug
  • thinbug
  • 2016年07月07日 14:04
  • 2324

Bounds(包围盒)概述与AABB包围盒应用

包围盒概述,Unity3d包围盒拓展方法,Unity3d包围盒应用
  • qq_29579137
  • qq_29579137
  • 2017年04月23日 15:35
  • 1240

Unity Bound

Bound:包围盒,边界框,AABB的简称,Mesh,Collider,Renderer都存在bound。(Mesh返回的是自身坐标,其余返回的是世界坐标)。 using UnityEngine;...
  • Mr_Jis
  • Mr_Jis
  • 2016年06月01日 23:29
  • 2068

Unity API - C

Unity API - C
  • a2324268086
  • a2324268086
  • 2016年04月16日 21:28
  • 4838

prefix wsdp is not bound to a namespace

如果你用CXF3.1.5 在tomcat上面去发布JAX-RS Web Service程序,过几天就会发现tomcat console报下面的错误: prefix wsdp is not boun...
  • bigtree_3721
  • bigtree_3721
  • 2016年04月15日 11:26
  • 2687

vue.js:Namespace "v-on" is not bound

在H5页面下,使用Vue的v-on:click,结果报错,错误提示:Namespace "v-on" is not bound,如下图所示: 解决办法:将v-on换为@...
  • gaoxiaoba
  • gaoxiaoba
  • 2016年09月30日 14:55
  • 3372
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity Bound
举报原因:
原因补充:

(最多只允许输入30个字)