Unity3D之获取BoxCollider八个点的世界坐标
来源:互联网 发布:淘宝司法拍卖问题 编辑:程序博客网 时间:2024/06/05 17:35
我们想把场景中的BoxCollider的坐标点导出出来让服务器也能用。虽然BoxCollider自身的大小可以获取出来,但是如果有父对象,并且有坐标的变化那算起来就比较麻烦了。还好unity提供了一个方法,真的很便捷。如下图所示,我用了8个标记点来标记获取到的boxcollider的坐标。旋转、缩放都可以计算出正确的坐标点来。
最后,欢迎大家测试~ 欢迎在下面给我留言~
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using
UnityEngine;
using
System.Collections;
public
class
Test : MonoBehaviour
{
//8个标志位 ,用来在scene里预览
public
Transform[] points;
//需要提取Boxcollier顶点的对象
public
BoxCollider cube;
void
Start()
{
//父节只能调节位置, 不能调节旋转和缩放。
Transform parent = cube.transform.parent;
while
(parent!=
null
)
{
parent.localRotation = Quaternion.Euler(Vector3.zero);
parent.localScale = Vector3.one;
parent = parent.parent;
}
}
void
Update()
{
Vector3 [] veces = GetBoxColliderVertexPositions(cube);
for
(
int
i =0; i< veces.Length; i++)
{
points[i].transform.position = veces[i];
}
}
Vector3[] GetBoxColliderVertexPositions (BoxCollider boxcollider)
{
var vertices =
new
Vector3[8];
//下面4个点
vertices[0] = boxcollider.transform.TransformPoint(boxcollider.center +
new
Vector3(boxcollider.size.x, -boxcollider.size.y, boxcollider.size.z) * 0.5f);
vertices[1] = boxcollider.transform.TransformPoint( boxcollider.center +
new
Vector3(-boxcollider.size.x, -boxcollider.size.y, boxcollider.size.z) * 0.5f);
vertices[2] = boxcollider.transform.TransformPoint( boxcollider.center +
new
Vector3(-boxcollider.size.x, -boxcollider.size.y, -boxcollider.size.z) * 0.5f);
vertices[3] = boxcollider.transform.TransformPoint(boxcollider.center +
new
Vector3(boxcollider.size.x, -boxcollider.size.y, -boxcollider.size.z) * 0.5f);
//上面4个点
vertices[4] = boxcollider.transform.TransformPoint(boxcollider.center +
new
Vector3(boxcollider.size.x, boxcollider.size.y, boxcollider.size.z) * 0.5f);
vertices[5] = boxcollider.transform.TransformPoint( boxcollider.center +
new
Vector3(-boxcollider.size.x, boxcollider.size.y, boxcollider.size.z) * 0.5f);
vertices[6] = boxcollider.transform.TransformPoint( boxcollider.center +
new
Vector3(-boxcollider.size.x, boxcollider.size.y, -boxcollider.size.z) * 0.5f);
vertices[7] = boxcollider.transform.TransformPoint(boxcollider.center +
new
Vector3(boxcollider.size.x, boxcollider.size.y, -boxcollider.size.z) * 0.5f);
return
vertices;
}
}
最后,欢迎大家测试~ 欢迎在下面给我留言~
0 0
- Unity3D之获取BoxCollider八个点的世界坐标
- Unity 获取BoxCollider八个点的世界坐标
- Unity3D将屏幕坐标上的点转换为世界坐标中的点
- unity3d鼠标点击,获取世界坐标
- unity3d鼠标点击,获取世界坐标
- Unity3D 世界坐标上一个点对应UI上一个点
- [Unity3D]BoxCollider、SphereCollider、CapsuleCollider的性能对比
- [unity3d]navmesh 自动寻路 鼠标点击的坐标获取 鼠标点击的世界坐标
- unity3d的世界坐标转化成屏幕坐标
- Unity3D的世界坐标转化成屏幕坐标
- [unity3d]屏幕坐标跟世界坐标的转换
- unity3d的世界坐标转化成屏幕坐标
- Unity3D 屏幕坐标跟世界坐标的转换
- [unity3d]屏幕坐标跟世界坐标的转换
- BoxCollider修改Size大小问题。Unity3d的坑
- OSG中获取视点的世界坐标
- Unity3D世界坐标转成UI坐标
- 【Unity3D】世界坐标与屏幕坐标
- Network学习8_Java之Pcap文件解析(三:解析文件)
- ssh使用bash实现免密码登录
- EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS
- HDU 5312 Sequence(三角形数应用)——BestCoder 1st Anniversary ($)
- 【翻译】Java ConcurrentHashMap的最佳实践
- Unity3D之获取BoxCollider八个点的世界坐标
- JSP传参中文乱码
- 五大常用算法之二:动态规划算法
- linux初学
- Appium for IOS Automation Test(一) MAC平台中Appium 环境搭建
- Linux搭建SVN服务器
- Android进程和线程
- Edius7下载,安装,破解完整
- 1053. 住房空置率 (20)