gpt4 book ai didi

javascript - 根据对象的 Angular 移动对象

转载 作者:行者123 更新时间:2023-12-02 14:07:20 24 4
gpt4 key购买 nike

我正在尝试根据对象的旋转来移动对象,我有 4 种方法:

  • 转发
  • 向后
  • 向上
  • 向下

在这 4 种方法中,只有 forwardbackward 似乎工作正常。另外两个似乎根据旋转有不同的效果。当它设置为 90 度旋转时,其作用与向前相同(向前在旋转时位于屏幕下方),但实际上所需的效果是使其向右移动。

Rotation Image

这两种方法似乎工作正常:

public get forward(): Vector2 {
return new Vector2(
Math.cos(this.rotation.degrees * (Math.PI / 180)),
Math.sin(this.rotation.degrees * (Math.PI / 180))
);
}

public get backward(): Vector2 {
return new Vector2(
-Math.cos(this.rotation.degrees * (Math.PI / 180)),
-Math.sin(this.rotation.degrees * (Math.PI / 180))
);
}

但是这两个不能正常工作。我似乎无法弄清楚是什么原因造成的,我认为数学是相似的,也许我错了?

public get up(): Vector2 {
return new Vector2(
Math.cos(this.rotation.degrees * (Math.PI / 180)),
-Math.sin(this.rotation.degrees * (Math.PI / 180))
);
}

public get down(): Vector2 {
return new Vector2(
-Math.cos(this.rotation.degrees * (Math.PI / 180)),
Math.sin(this.rotation.degrees * (Math.PI / 180))
);
}

最佳答案

您应该这样计算:向上向前的距离为+90度,向下向前<的距离为-90度 (并且向后向前仅成180度)。

换句话说:

public get up(): Vector2 {
const phi = (this.rotation.degrees + 90) * (Math.PI / 180);
return new Vector2(
Math.cos(phi),
Math.sin(phi)
);
}

在没有另一个的情况下否定cos/sin显然是不正确的。例如,-cos 表示“在 x 轴上向相反方向移动并保持 y 轴速度相同”。例如,forward 指向东北东北的情况将创建一个指向西北西北的矢量。

关于javascript - 根据对象的 Angular 移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39927418/

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