您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

坦克大战系列11-高级瞄准策略

2019/8/28 17:49:56发布127次查看

游戏中寻找学习java的乐趣之坦克大战系列11-高级瞄准策略
前言
本篇将给大家准备一个高级瞄准运动方法。
高级运动瞄准
其基本原理是:
change in x = cos(initialheading) * radius - cos(initialheading + changeinheading) * radius
change in y = sin(initialheading + changeinheading) * radius - sin(initialheading) * radius
其中initialheading是敌方机器人在初始位置的方向,子弹飞行期间的方向变化为 changeinheading,我们假定它以 radius为圆周半径运动。
每转的方向变化:
headingchangeperturn =
(heading2 - heading1)/time 得到这个值,其中 time是两次测量的间隔时间;
子弹运动时间:
time = gettime()+(range/(20-(3*firepower))) ,其中 range是发射时我们和敌人之间的距离,而 firepower是我们计划使用的射击火力;
半径:radius = velocity/headingchangeperturn。
实现代码如下:
doublebulletvelocity=20-3*bulletpower;
doubleheadingset=enemy.headingradian-enemy.prevheadingradian+0.00001;
doubler=enemy.velocity/headingset;
doublepredictdirection=0.0;
doubleenemydistance=enemy.distance;
for(inti=0;i<4;i++){
doublebullettraveltime=
enemydistance/bulletvelocity;
doublepredictx,predicty;
doublepredictheadingradian=enemy.headingradian+headingset*bullettraveltime;
predictx=enemy.xcoordinate-r*math.cos(predictheadingradian)+r*math.cos(enemy.headingradian);
predicty=enemy.ycoordinate+r*math.sin(predictheadingradian)-r*math.sin(enemy.headingradian);
predictdirection=enemy.getangle(getx(),gety(),predictx,predicty);
enemydistance=point2d.distance(getx(),gety(),predictx,predicty);
}
好啦,本期内容就到这里喽,我是不会玩游戏却非得写游戏的陈老师,一起来学习java吧!

该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product