找回密码
 注册帐号

扫一扫,访问微社区

Y-miku 基于距离场的碰撞检测算法-moba游戏必用

5
回复
1009
查看
[ 复制链接 ]
排名
511
昨日变化

46

主题

394

帖子

5233

积分

Rank: 9Rank: 9Rank: 9

UID
26484
好友
17
蛮牛币
12907
威望
0
注册时间
2014-5-24
在线时间
2819 小时
最后登录
2019-4-23

游戏蛮牛QQ群会员VIP

QQ
2019-3-5 19:05:40 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
下载地址https://github.com/Ymiku/Distance-Fields-collision-detection
moba游戏地图大小较固定,人物碰撞可按圆形处理,且碰撞可以以二维形式进行处理,固比较适合此算法用于静态碰撞体检测
步骤:
1.预处理
设玩家碰撞体为圆形且半径为1
将场景以棋盘形式划分,计算每个格子到距离其最近的碰撞体的距离。存在一个二维数组中
[C#] 纯文本查看 复制代码
for (int col = 0; col < mapLength; col++) {
				for (int cul = 0; cul < mapLength; cul++) {
					color = fieldsMap [cul, col] = CalculateDis (new Vector2 (originPoint.x + cul * delta, originPoint.y + col * delta));
					tex2D.SetPixel (cul, col, new Color (color, color, color));
				}
			}


2.运行时,获取玩家所在点的梯度(通过插值采样计算)作为被挤压的方向,通过所在点的值判断是否被挤压以及被挤压的距离。
[C#] 纯文本查看 复制代码
for (int i = 0; i < 3; i++) {
			dist = QueryWorld(newPos);
			if (dist >= rad)
				break;
			newPos = ori + MathExtra.FastNormalize(newPos+QueryNormal (newPos)*(rad-dist)-ori)*4f*Time.deltaTime;
		}


回复

使用道具 举报

3偶尔光临
245/300
排名
11658
昨日变化

1

主题

66

帖子

245

积分

Rank: 3Rank: 3Rank: 3

UID
258424
好友
0
蛮牛币
85
威望
0
注册时间
2017-12-7
在线时间
94 小时
最后登录
2019-4-23
2019-3-11 10:46:15 显示全部楼层
哈,还有这种玩法,脑洞果然不够啊,我想的是检测范围
回复 支持 反对

使用道具 举报

3偶尔光临
245/300
排名
11658
昨日变化

1

主题

66

帖子

245

积分

Rank: 3Rank: 3Rank: 3

UID
258424
好友
0
蛮牛币
85
威望
0
注册时间
2017-12-7
在线时间
94 小时
最后登录
2019-4-23
2019-3-11 10:48:38 显示全部楼层
哈,还有这种玩法,脑洞果然不够啊,我想的是检测范围
回复 支持 反对

使用道具 举报

排名
20606
昨日变化

0

主题

47

帖子

89

积分

Rank: 2Rank: 2

UID
260384
好友
0
蛮牛币
10
威望
0
注册时间
2017-12-19
在线时间
16 小时
最后登录
2019-4-9
2019-3-11 11:38:02 显示全部楼层
6666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

0

主题

12

帖子

33

积分

Rank: 1

UID
197954
好友
0
蛮牛币
5
威望
0
注册时间
2017-1-2
在线时间
21 小时
最后登录
2019-4-3
2019-4-2 18:10:46 显示全部楼层
6666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

2初来乍到
125/150
排名
19946
昨日变化

0

主题

40

帖子

125

积分

Rank: 2Rank: 2

UID
236596
好友
0
蛮牛币
47
威望
0
注册时间
2017-8-8
在线时间
57 小时
最后登录
2019-4-17
2019-4-9 09:37:55 显示全部楼层
这种算会不会很难消耗性能
回复 支持 反对

使用道具 举报

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

本版积分规则