gpt4 book ai didi

java - 物体朝错误的方向移动

转载 作者:行者123 更新时间:2023-11-29 03:21:05 28 4
gpt4 key购买 nike

我的 Java 游戏有问题(2d,自上而下 View )我的角色朝鼠标的方向发射子弹。我尝试了一些我在这里找到的代码,但我遇到了问题。子弹很少会朝正确的方向移动。它经常向上、向下、向左和向右移动。看到我尝试过的其他代码也有这个问题我不认为问题出在这段代码中。有什么想法吗?

int deltax = bullet.endpos.x - bullet.startx;//this code is when I create a new bullet
int deltay = bullet.endpos.y - bullet.starty;
direction = Math.atan(deltay / deltax);
speed = 5.0;

bullet.x=(bullet.x - (speed * Math.cos(direction)));
bullet.y=(bullet.y - (speed * Math.sin(direction)));

最佳答案

您不需要知道此代码中的真实角度。

代码应该是:

int deltaX = bullet.endpos.x - bullet.startx; //this code is when I create a new bullet
int deltaY = bullet.endpos.y - bullet.starty;
double radius = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
double normalizedDeltaX = deltaX / radius;
double normalizedDeltaY = deltaY / radius;
speed = 5.0;

bullet.x -= /*maybe your error is here, and there should be += as you need to increment coordinates, not decrement*/ speed * normalizedDeltaX;
bullet.y -= /*the same thing here*/ speed * normalizedDeltaY;

或者,如果您以后真的要这个角度(为什么?),在这种情况下,Math.atan2 会更受欢迎,因为您不会丢失飞机的第三和第四部分:

double direction = Math.atan2(deltaY, deltaX);

关于java - 物体朝错误的方向移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23607714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com