2017-05-16 14:11

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/game/b-55.html

在3D射击游戏中,经常会有这样的情况,有一架敌人的飞机在我们上空飞行,我们陆地炮塔需要自动转动炮管,瞄准敌机开炮,这就需要计算3D空间的坐标,这涉及到两个角,一个叫做偏转角,一个叫做仰角,偏转角控制炮管水平转动,仰角控制炮管上下转动。那么,如果我们已知敌人与我们的直线距离,偏转角和仰角,如何计算出敌人的具体坐标?其实就是要求出下图中E点坐在的坐标。

1494914895992794.png

上图中,我们已知的是:红色直线r的长度,红色的θ角,和蓝色的φ角,现在要求E点的坐标。

根据三角函数的比列关系我们求得:

E点的x,y,z分别为:

X = r*sinθ*sinφ

Y = r*cosθ

Z = r*sinθ*cosφ

这样就可以求出来敌机的具体坐标,其实在做RPG游戏时,我们经常会通过鼠标控制摄像机以主角为中心转动方向,比如魔兽世界中摄像机就会一直跟着英雄走,偶尔我们也会转动摄像机去看看英雄的侧面和前面,这些都是以英雄为中心的摄像机运动。我们要计算出摄像机绕着英雄偏转角和仰角分别旋转了多少度,此时摄像机应该放在哪个位置。这节课就讲这么多,如果想知道上面公式具体的推导过程和原理,可以看我的游戏开发之3D数学视频,因为视频比文字能够表达更清楚,谢谢大家捧场。

欢迎关注游戏开发者微信公众号1496659104401943.png

 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。https://blog.kokojia.com/game/b-55.html

评论