带地形惩罚和碰撞半径的A*寻路算法

介绍了如何在A*寻路算法中加入地形惩罚和碰撞半径的概念,以适应不同体积的游戏对象。文章通过示例展示了碰撞半径为1、2和0时的寻路效果,并提供了源代码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是之前写的带地形惩罚的A*寻路算法:http://blog.csdn.net/clb929/article/details/54745742


前言

在实际开发过程中,发现碰撞计算始终是无法回避的问题,于是就有了这个带地形惩罚和碰撞半径的A*寻路算法

在现实生活中,一个人和一头大象的体积是不同的,能够让一个人通过的路未必能让一头大象通过,同样的,在A*寻路算法中,不同碰撞半径的2个物体的路径选择应该也是不同的。

碰撞半径是什么?在3D游戏中,计算2个物体是否碰撞之前,2个物体都会赋予一个属性--碰撞体积。而2D游戏中,这个计算可以更简化,只要考虑双方的占地面积。现实中的物体是各种各样的,有长条形的、圆形的、方形的、椭圆形的、不规则的,如果用2个物体真实的形状去计算碰撞,那么光是几百个NPC和几百个怪物的碰撞计算就会让你的服务器不堪重负,所以对碰撞体积做一些简化是非常有必要的,球形或圆形是比较好的选择,这种简化连物体的朝向都不用考虑了。


简介

AStarPathFinding类增加了IntersectRadius属性,碰撞半径,小于等于0时无视地形寻路

AStarPathFinding类增加了IsValidMapNode方法,检查指定节点是否是一个可以到达的节点


演示

碰撞半径为1的寻路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值