我有一个子弹类和一个算法可以将我的子弹移动到我按下的位置,但是当点击它时,如何让子弹继续通过mouse_x和mouse_y?
在我的更新方法中:
float xSpeed = (MoveToX - x) / 9;
float ySpeed = (MoveToY - y) / 9;
this.x += xSpeed;
this.y += ySpeed;
这是我第一次创建子弹时:
Bullet(int Mx, int My){
c = Color.red;
MoveToX = Mx;
MoveToY = My;
MoveToX += Board.cam.camX;
MoveToY += Board.cam.camY;
点击时,Mx是鼠标x。与y相同。
编辑: 这是我的最终产品:一切正常,
Bullet(int Mx, int My){
c = Color.red;
MoveToX = Mx + Board.cam.camX;
MoveToY = My + Board.cam.camY;
int speed = 5;
float distance = (float) Math.sqrt(Math.pow(MoveToX - x, 2) + Math.pow(MoveToY - y, 2));
amountToMoveX = (((MoveToX - x) / distance) * speed);
amountToMoveY = (((MoveToY - y) / distance) * speed);
}
public void update(){
x += amountToMoveX;
y += amountToMoveY;
}
答案 0 :(得分:0)
子弹的实例变量不应该是moveTo_
,而是velocity
和direction
。
从子弹位置和目标位置计算构造函数中的direction
(即角度)。 velocity
也可能是静态常量,具体取决于您的用例。
如果是一个选项,我强烈建议使用物理或游戏引擎。这些问题在这些引擎中已经解决了一百次。它们可以帮助您完成这些基本任务,并帮助您专注于实际问题。