我想尝试在Java OpenGL中构建雷达。基本上,在此方法中,您传入玩家的当前位置,玩家面对的角度和敌人的位置。如果敌人正前方,则红点(表示敌人)应该在圆(雷达)的顶部,可以说是0度。如果直接在右侧,则红点将为90度,依此类推。基本上,我试图找到在玩家正前方射击的矢量与从玩家到敌人的矢量之间的角度。我将如何去做呢?我环顾四周,发现了有关atan2()的建议,但还不确定如何使用它。如果有一种更快,更有效的处理方式,也请告知我。
编辑:我使用绘制点的方法,而不是点积和cos等,并且我使用玩家的位置作为原点。但是,如果距离大于使用距离公式选择的数字70,那么我该如何使敌点出现在雷达边缘?雷达内的任何东西都少于70,但是70以外的任何敌人,我希望敌人只是绕着雷达的边缘盘旋,而不是让敌人的点消失。
最佳答案
假设您的玩家和敌人在某个2D空间(甚至3D空间,但它们在2D平面(例如水平地面)上移动)具有坐标,则我认为更简单的方法是直接在地图的位置上映射将玩家/敌人实体放到雷达上,然后基于玩家当前相对于真实北方的角度,以玩家为原点对雷达进行旋转变换。