Unity3d之求物体体积
2013-07-30 11:58
169 查看
在对物体进行体积计算的时候,很容易因为物体的复杂父子关系而导致计算失败,所以需要对其所有的子节点以及本身的bounds进行计算。
我们目前的方法:
这样就给模型绑定了对应的BoxCollider
我们目前的方法:
Renderer[] renders = GetComponentsInChildren<Renderer>(); if(GetComponent<Renderer>()!=null){ System.Array.Resize<Renderer>(ref renders,renders.Length+1); renders[renders.Length-1] = GetComponent<Renderer>(); } Quaternion ori = gameObject.transform.rotation; gameObject.transform.rotation = Quaternion.Euler(0,0,0); foreach(Renderer render in renders){ Vector3 vmax = render.bounds.max; Vector3 vmin = render.bounds.min; xmax = Mathf.Max(xmax,vmax.x); ymax = Mathf.Max(ymax,vmax.y); zmax = Mathf.Max(zmax,vmax.z); xmin = Mathf.Min(xmin,vmin.x); ymin = Mathf.Min(ymin,vmin.y); zmin = Mathf.Min(zmin,vmin.z); } BoxCollider collider = gameObject.AddComponent<BoxCollider>(); Vector3 s = gameObject.transform.localScale; Vector3 c = new Vector3((xmax + xmin)*0.5f,(ymax + ymin)*0.5f,(zmax + zmin)*0.5f) - transform.position; collider.center = new Vector3(c.x/s.x,c.y/s.y,c.z/s.z); collider.size = new Vector3((xmax - xmin)/s.x,(ymax - ymin)/s.y,(zmax - zmin)/s.z); transform.rotation = ori;
这样就给模型绑定了对应的BoxCollider
相关文章推荐
- Unity3D——物体鼠标跟随转向
- unity3d中让某个物体透明
- [Unity3D]场景间切换与数据传递(以及物体删除技巧)
- Unity3D里实现物体移动到目标点,并且摄像机跟着移动的简单方案
- Unity3D 拖动物体旋转
- unity3d Quaternion 计算3D物体旋转角度
- unity3d实现相机对场景物体的旋转、缩放、平移查看功能、近似于scene下查看场景的效果
- unity3d中获得物体的size
- unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到
- unity3d中摄像机父物体与模型碰撞
- Unity3d鼠标拖拽控制物体720°旋转
- Unity3D开发之控制摄像机围绕物体旋转 平移 缩放
- Unity3D中鼠标拖拽物体
- Unity3D中将物体模型放置到另一物体模型表面的简单办法
- 【酷熊科技】工作积累 ----------- 在unity3d里怎样隐藏物体
- unity3d 为什么物体无法被lightmapping烘培阴影?
- Unity3D让物体从规定时间内移动到某一位置
- unity3d 触屏拖拽物体代码
- unity3d 判断目标物体对于我的方向
- unity3d中让物体显示和隐藏