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

7
回复
1496
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
510
昨日变化

46

主题

396

帖子

5253

积分

Rank: 9Rank: 9Rank: 9

UID
26484
好友
17
蛮牛币
12899
威望
0
注册时间
2014-5-24
在线时间
2837 小时
最后登录
2019-6-25

游戏蛮牛QQ群会员VIP

QQ

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

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

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偶尔光临
288/300
排名
11659
昨日变化

1

主题

71

帖子

288

积分

Rank: 3Rank: 3Rank: 3

UID
258424
好友
0
蛮牛币
216
威望
0
注册时间
2017-12-7
在线时间
132 小时
最后登录
2019-6-26
沙发
2019-3-11 10:46:15 只看该作者
哈,还有这种玩法,脑洞果然不够啊,我想的是检测范围
3偶尔光临
288/300
排名
11659
昨日变化

1

主题

71

帖子

288

积分

Rank: 3Rank: 3Rank: 3

UID
258424
好友
0
蛮牛币
216
威望
0
注册时间
2017-12-7
在线时间
132 小时
最后登录
2019-6-26
板凳
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
5#
2019-4-2 18:10:46 只看该作者
6666666666666666666666666666666666666666666666666666
2初来乍到
131/150
排名
19947
昨日变化

0

主题

41

帖子

131

积分

Rank: 2Rank: 2

UID
236596
好友
0
蛮牛币
53
威望
0
注册时间
2017-8-8
在线时间
62 小时
最后登录
2019-6-23
6#
2019-4-9 09:37:55 只看该作者
这种算会不会很难消耗性能
7日久生情
1512/5000
排名
1806
昨日变化

0

主题

422

帖子

1512

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
148517
好友
1
蛮牛币
38
威望
0
注册时间
2016-5-13
在线时间
354 小时
最后登录
2019-4-26
7#
2019-4-26 01:05:05 只看该作者
6666666666666666666666
3偶尔光临
200/300
排名
18791
昨日变化

0

主题

32

帖子

200

积分

Rank: 3Rank: 3Rank: 3

UID
39397
好友
0
蛮牛币
138
威望
0
注册时间
2014-8-12
在线时间
136 小时
最后登录
2019-6-5
8#
2019-5-28 10:51:05 只看该作者
获取玩家所在点的梯度
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则