最近我一直在和Todd Perkins一起观看Flash视频:“Lynda.com - ActionScript 3.0项目:游戏开发”。
上一课是“创建一个Flash坦克游戏”。 我跟着并创建了与本课程中描述的完全相同的游戏。 但是在课程的例子中,敌人坦克没有下降AI。敌人随意移动和射击,玩这个游戏似乎并不是很有趣。
我决定让AI更加强化。 如果被玩家击中,我已设法让敌人改变运动方向。 如果敌人成功击中了玩家,它会停止并继续以相同的枪角和相同的位置射击玩家,直到他错过或被玩家击中。
问题是计算右枪角的公式不够正确。敌人有点射击,但他仍然错过了很多。
所以,这是我用过的公式:
enemyTargetRotation=Math.asin(Math.abs(enemy_mc.y - player_mc.y)/(Math.sqrt(Math.pow(player_mc.x - enemy_mc.x, 2)+ Math.pow((enemyWall_mc.height - stage.height),2)))/180*Math.PI);
enemyTargetRotation*=10000;
enemyTargetRotation+=180;
以下是源代码等的链接http://www.megaupload.com/?d=CH48PEML
有人可以帮助我吗?
P.S。这个游戏只是为了娱乐和自我教育,我不打算出售它或其他东西:)
答案 0 :(得分:1)
为什么不只是Math.atan2(y2 - y1, x2 - x1) / Math.PI * 180
?给定坦克的x1,y1坐标和目标的x2,y2坐标,给出射程角度。