我意识到这个问题已经以不同的方式回答了,我目前的解决方案是基于以前的答案,但它对我不太有用,我不知道为什么。
float targetX = bullet.getTarget().x;
float targetY = bullet.getTarget().y;
float bulletX = bullet.getLocation().x;
float bulletY = bullet.getLocation().y;
// Version of setX(getX() + (speed * Math.cos(direction)));
float deltaX = targetX - bulletX;
float deltaY = targetY - bulletY;
float direction = (float) Math.atan2(deltaY, deltaX);
float x = bulletX + BULLET_SPEED * (float) Math.cos(direction);
float y = bulletY + BULLET_SPEED * (float) Math.sin(direction);
bullet.setLocation(x, y);
以下是实际结果:
子弹朝(几乎正确的)方向移动的动画 GIF
我的数学有问题吗?
它最终成为画布的边框偏移了目标点,所以我对其进行了补偿并得到了接近准确行为的东西。