好吧所以我在我的一个游戏中为一个僵尸制作ai,但是当我试图旋转僵尸以便他面对玩家时,一切都没有了。它们以错误的方式旋转,当我靠近时旋转,即使角度不应该改变。 这里是我的一些代码:ps忽略z,这个游戏是3d但是我只在轴上旋转所以我可以编写这个就像是xy一样。
//get camera/player yx
float PlayerYPosition = Player.getPosition().y;
float PlayerXPosition = Player.getPosition().z;
//get zombie yx
float ZombieYPosition = Zombie.getPosition().y;
float ZombieXPosition = Zombie.getPosition().z;
//get side lengths
float sideY = (CameraYPosition - ZombieYPosition);
float sideX = (CameraXPosition - ZombieXPosition);
//get angle
float angle = (float)Math.atan2(sideX,sideY);
//move decimal place out so ex: 0.90f is 90.0f
float ans = angle * 100;
//set rotation of zombie
super.setRotY(ans);
答案 0 :(得分:3)
Math.atan2
在radians中返回其值,而非度数。要转换为度数,请乘以180 / pi或360 /(2 pi):
*.Name1-[A-Z].Name2.txt
Java甚至还有一个内置函数Math.toDegrees
:(感谢@yshavit)
float ans = angle * 180 / Math.PI;
另外,@ themhavit在评论中说:你应该在整个代码中使用弧度。但这可能是太多的工作,或者你可能依赖于使用学位的第三方图书馆。