在我的游戏中,我有一个玩家对象和一个敌人对象。初始化时,敌方对象应该在该特定时间找到玩家的当前位置并前往该位置,最终通过或击中玩家,此时它将离开屏幕。
为了做到这一点,我认为我将不得不使用三角函数但是我似乎无法弄清楚要做什么,因为我的方向和速度方程永远不会与球员的位置。
这是我拥有的......
direction = Math.atan((this.X_POS-plr.X_POS)/(this.Y_POS-plr.Y_POS));
speedX = (int) (speed * Math.cos(direction));
speedY = (int) (speed * Math.sin(direction));
如果有帮助的话,请点击这里:
如果有人知道如何正确地做到这一点我很感激帮助,谢谢!
//Inside the food/enemy class:
//inside the constructor
direction = Math.random() * 2.0 * Math.PI; //x/y position of player, xy position of food
direction = Math.atan((this.X_POS-plr.X_POS)/(this.Y_POS-plr.Y_POS));
speedX = (int) (speed * Math.cos(direction));
speedY = (int) (speed * Math.sin(direction));
//inside update position method
X_POS += speedX;
Y_POS += speedY;
//inside draw player method
g.setColor(rim);
g.fillOval(X_POS-radius-3, Y_POS-radius-3, (radius*2)+6, (radius*2)+6);
g.setColor(center);
g.fillOval(X_POS-radius, Y_POS-radius, radius*2, radius*2);
//Inside the player class X_POS and Y_POS are set to 200 each.
然后,在主类的run方法中每隔15毫秒调用一次更新位置方法和draw方法。
答案 0 :(得分:1)
好吧,因为似乎没有其他人知道我是如何知道自己的。
direction = Math.atan2(plr.Y_POS - Y_POS, plr.X_POS - X_POS);
speedX = (speed * Math.cos(direction));
speedY = (speed * Math.sin(direction));
感谢您的帮助!