找回密码
 注册帐号

扫一扫,访问微社区

脚本 位移/旋转/缩放后碰撞盒保持不变的算法

16
回复
483
查看
[ 复制链接 ]
4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
2019-9-11 11:18:22 显示全部楼层 阅读模式
100蛮牛币
运行前,Cube1和Cube2所有参数完全一样: 1.jpg
现求一种针对BoxCollider算法,在运行时,任意改变Cube2的位置、旋转(只旋转90度的倍数)、缩放,仍然保持Cube2的BoxCollider的位置和大小与Cube1完全一致。
2.jpg
如上图,通过改变BoxCollider的参数保持与Cube1一致,求算法!

回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-11 17:07:33 显示全部楼层
这个太简单了,不需要算法,外面套上一个盒子做碰撞,里面的东西直接做显示
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-11 17:18:44 显示全部楼层
子川_易 发表于 2019-9-11 17:07
这个太简单了,不需要算法,外面套上一个盒子做碰撞,里面的东西直接做显示 ...

我要的就是算法,能取巧的话就不会来悬赏了。。。
回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-11 18:03:09 显示全部楼层
那也容易,运行记录最基础数据或者直接取那个参照的,反正总共也就三个值Position,Rotation,Scale,操作后,比如坐标直接算差值就可以了,Scale直接拿老的就可以,旋转方向是跟随Transform的,貌似还是需要外面套一个
回复

使用道具 举报

5熟悉之中
801/1000
排名
4940
昨日变化

1

主题

89

帖子

801

积分

Rank: 5Rank: 5

UID
257307
好友
0
蛮牛币
1364
威望
0
注册时间
2017-12-1
在线时间
407 小时
最后登录
2020-1-10
2019-9-11 19:04:34 显示全部楼层
参照cube1,生成碰撞器就行
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-11 19:28:17 显示全部楼层
子川_易 发表于 2019-9-11 18:03
那也容易,运行记录最基础数据或者直接取那个参照的,反正总共也就三个值Position,Rotation,Scale,操作后 ...

其他都好说,就是旋转了麻烦,BoxCollider的x,y,z的对应方向变了。项目里的一个功能,自由受限,不可能套一个东西,或是改变层级关系。
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-11 19:29:25 显示全部楼层
和平源于力量 发表于 2019-9-11 19:04
参照cube1,生成碰撞器就行

如何生成碰撞器,能具体点吗?
回复

使用道具 举报

5熟悉之中
801/1000
排名
4940
昨日变化

1

主题

89

帖子

801

积分

Rank: 5Rank: 5

UID
257307
好友
0
蛮牛币
1364
威望
0
注册时间
2017-12-1
在线时间
407 小时
最后登录
2020-1-10
2019-9-12 10:15:13 显示全部楼层
aikusuodi 发表于 2019-9-11 19:29
如何生成碰撞器,能具体点吗?

雨松研究过,Unity3D研究院之自动计算所有子对象包围盒
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-16 09:05:04 显示全部楼层
和平源于力量 发表于 2019-9-12 10:15
雨松研究过,Unity3D研究院之自动计算所有子对象包围盒

谢谢你提供的信息,我看了下雨松的这篇文章,他主要是基于模型Mesh的范围计算碰撞盒的,但我这边作为参照的Cube1碰撞盒更模型范围大小没关系。。。
回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-18 18:15:57 显示全部楼层
aikusuodi 发表于 2019-9-16 09:05
谢谢你提供的信息,我看了下雨松的这篇文章,他主要是基于模型Mesh的范围计算碰撞盒的,但我这边作为参照 ...

因为都是规则box而且变换90度,这个如果不外套碰撞盒,通过参照物计算,转换一下赋值给碰撞盒的size的xyz就可以了
回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-18 18:27:00 显示全部楼层
aikusuodi 发表于 2019-9-16 09:05
谢谢你提供的信息,我看了下雨松的这篇文章,他主要是基于模型Mesh的范围计算碰撞盒的,但我这边作为参照 ...

Cube的box size都是(100,200,100),比如Cube1沿x轴转了90度,当要Cube1和Cube2box相同方向时就是Cube1的size变成(100,100,200),就一样了
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-19 09:36:21 显示全部楼层
子川_易 发表于 2019-9-18 18:27
Cube的box size都是(100,200,100),比如Cube1沿x轴转了90度,当要Cube1和Cube2box相同方向时就是Cube1 ...

你说得很对啊,我要的就是这个算法。你举的例子是沿x轴转了90度,那转180,270呢?如果y,z轴同时也有旋转呢?总不可能每种情况都一一列举出来吧,我要的就是通用的算法。旋转的搞定了,位移和缩放都好弄。
回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-19 10:01:30 显示全部楼层
aikusuodi 发表于 2019-9-19 09:36
你说得很对啊,我要的就是这个算法。你举的例子是沿x轴转了90度,那转180,270呢?如果y,z轴同时也有旋 ...

其实xyz你只用关注90度就可以了,因为180度相当于没有动,90度270度是一样的,这个自己列一个数组都可以了,顶多9种组合,不是啥算法的事
回复

使用道具 举报

5熟悉之中
957/1000
排名
3393
昨日变化

11

主题

124

帖子

957

积分

Rank: 5Rank: 5

UID
165131
好友
0
蛮牛币
1205
威望
0
注册时间
2016-8-31
在线时间
382 小时
最后登录
2019-11-18
2019-9-19 10:40:11 显示全部楼层
子川_易 发表于 2019-9-19 10:01
其实xyz你只用关注90度就可以了,因为180度相当于没有动,90度270度是一样的,这个自己列一个数组都可以 ...

刚随便试了下,cube1 cube2计算方法,从xyz顺序计算,x轴变化90度,其实就是yz换一下,同理y轴xz换一下,z轴xy换一下顺序计算 例如 cube1 旋转是(90,90,0)大小(100,200,300)结果 cube2 旋转(0,0,0) 大小(200,300,100);
第一步 (100,200,300)计算x轴变化yz换位,(100,300,200);
第二步 (100,300,200)计算y轴变化xz换位(200,300,100);
第三步  因为z轴没变所以没算
随便试的,不能代表正确
回复

使用道具 举报

4四处流浪
376/500
排名
9305
昨日变化

2

主题

37

帖子

376

积分

Rank: 4

UID
3697
好友
0
蛮牛币
1375
威望
0
注册时间
2013-9-11
在线时间
223 小时
最后登录
2020-1-17
楼主 2019-9-19 11:10:17 显示全部楼层
子川_易 发表于 2019-9-19 10:40
刚随便试了下,cube1 cube2计算方法,从xyz顺序计算,x轴变化90度,其实就是yz换一下,同理y轴xz换一下, ...

我自己也试过,很麻烦的,绝对不只9种。而且0和180度,90和270度是不一样的,因为还涉及到位移的方向。我是被搞晕了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则