分享
 
 
 

[郑群 原创]我研究的地形碰撞检测方法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

首先我们要生成的地形顶点应该是n*m个顶点在X,Z平面上成矩形(推荐正方形)规则的排

列,就是X,Z坐标是有规律的(为简单期间X,Z均在正半轴),而Y值则是不同的,Y值表现

的就是地形的高低。(Y值可以算法算出来,比如随机取,也可以是用高度图得到,推荐后

者。)

然后用一个n*m的2维数组MapData[n][m]记录Y值。

关键的计算人物高度部分到了。首先根据人物坐标得到保存人物所在的三角形的三个点Y值

的数组索引,这个可以很简单的得到,如图。当然,得到人物所在矩形是很简单的,但是我

们要得到的是人物所在的三角形,这个时候就得判断了,这有个很简单的方法,那就是刚才

x%RECT_WIDTH+y%RECT_LONG<=(RECT_WIDTH+RECT_LONG)/2(前提是长宽都是整数才可以用%操作,否则就老实的p.x-p1.x,p.y-p1.y做吧)则在左边的这个三角形中,否则在

右边的三角形中。

得到了三个顶点的Y值,要得到人物的Y值,这有个公式p.y=p1.y+(p2.y-p1.y)*u+(p3.y-p1.

y)*v,其中u,v是重心坐标,因为我们这是直角三角形,所以可以很简单得到,u=z%RECT_LONG/RECT_LONG,v=x%RECT_WIDTH/RECT_WIDTH.怎么样?这个方法做人物于地形的碰撞检测很好吧,得到的高度很精确

。快去试试吧:)

float CTerrain::GetHeightWithXZ(float x,float z)//根据地图平面坐标得到地形高度信息

{

int iIndexX=x/MAP_RECT_WIDTH;

int iIndexZ=z/MAP_RECT_LONG;//这两个数据用来确定高度信息在数组中的位置,也就是数组下标

float u,v;

float t0,t1,t2;

float fOffsetZ=0.0f;

float fOffsetX=0.0f;

fOffsetX=x-(float)iIndexX*MAP_RECT_WIDTH;

fOffsetZ=z-(float)iIndexZ*MAP_RECT_LONG;//该坐标在此三角面中的偏移坐标

if(fOffsetX+fOffsetZ>(MAP_RECT_LONG+MAP_RECT_WIDTH)/2.0f)//判断该点在方格的那边三角面

{

u=1-(fOffsetX)/MAP_RECT_WIDTH;

v=1-(fOffsetZ)/MAP_RECT_LONG;//重心坐标

t0=MapData[iIndexZ+1][iIndexX+1],

t1=MapData[iIndexZ][iIndexX+1],

t2=MapData[iIndexZ+1][iIndexX];//确定坐标所在三角面三个顶点的高度

return t0+u*(t2-t0)+v*(t1-t0);//利用重心坐标求出高度插值

}

else

{

u=(fOffsetX)/MAP_RECT_WIDTH;

v=(fOffsetZ)/MAP_RECT_LONG;

t0=MapData[iIndexZ][iIndexX],

t1=MapData[iIndexZ][iIndexX+1],

t2=MapData[iIndexZ+1][iIndexX];

return t0+v*(t2-t0)+u*(t1-t0);

}

原文地质:http://bbs.gamedev.csdn.net/showthread.php?t=10294

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有