gpt4 book ai didi

java - 为什么我的物体朝错误的方向移动?

转载 作者:行者123 更新时间:2023-11-30 03:29:13 25 4
gpt4 key购买 nike

当我的两个物体发生碰撞时,我希望其中一个物体插入另一个物体。

while (checkCollision(this, cl)){ 
//cl is referring to the other entity, non-cl things my entity
double an = Assist.angle(new Vector3f(cl.z, 0, cl.x),
new Vector3f(z, 0, x));
double moveZ = Math.cos(Math.toRadians(an));
double moveX = Math.sin(Math.toRadians(an));
cl.z += moveZ;
cl.x += moveX;
}

checkCollision() 方法工作得很好,可以检测我的两个对象(在本例中为 3D 船舶)是否发生碰撞。

然后我得到另一个物体和当前物体之间的角度,然后使用这个角度,我推开另一个物体。但是 - 它不起作用。

另一个对象似乎总是被推向 +x 方向,而 Z 似乎没有任何严格的模式,但也无法正常工作。

这是我计算角度的方法(Assist.angle()):

public static double angle(Vector3f vec1, Vector3f vec2){
double so = Math.toDegrees(Math.atan2(((vec1.z) - vec2.z), ((vec1.x) - vec2.x)));
return Math.abs(so);
}

这里肯定有明显的错误 - 但我没有看到它,而且我已经工作了几个小时来尝试让这段代码正常工作。

最佳答案

Math.atan2() 采用 vector 线而不是角度、弧度或其他。它返回的值以弧度为单位。

由于历史原因,愚蠢地进入 Math.atan2() 期望 yx 之前。

http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#atan2(double,%20double)

而且我认为最后的 Math.abs(so) 没有任何帮助。

看看这个:

enter image description here

从您的评论来看,您认为您需要 Ab。你不知道。如果你只是想摆脱困境(这是一个极大的简化),你需要Ta,这是一种恭维。

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

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