【问题标题】:Make ball move to specify direction使球移动以指定方向
【发布时间】:2016-11-06 01:43:21
【问题描述】:

我想让球向某个方向移动,就像我给出的数字一样 0 - 360。目前我的惯例是:

0 向右移动,90 向下移动,180 向左移动和 270 向上移动。

问题是,如果我放置 10、11、12 等,它根本不会移动。有些数字使它以某种方式以 45 角移动。

我当前的代码:

float x = 0, y = 0;
float speed = 1f;

int angle = 90;

float moveX += speed * Math.cos(Math.toRadians(angle));
float moveY += speed * Math.sin(Math.toRadians(angle));

x += moveX;
y += moveY;

moveX = 0;
moveY = 0;

如果我起飞toRadians,球会转到不同的方向,但仍然不起作用。

我的数学和英语很糟糕,所以尽量简单地解释一下。而且我不知道弧度和度数之间的区别。

【问题讨论】:

  • 啊提示:人生没有弯路。如果你想做数学......那么了解数学是必不可少的。也许从这里开始:purplemath.com/modules/radians.htm ...这是当今的好事:只需将您需要了解的术语输入您的搜索引擎,通常您会找到大量的材料来学习...免费。所以请不要指望我们再次那种基础知识......只是为了你。 (我并不是说您的问题是一个坏问题;我只是指出您不需要我们进行基础研究)。
  • 我试过了。。我试着学习弧度和度数,但我用英语很难说,因为我只知道加、减、乘、除。
  • 你试过在网上搜索你的语言的资料吗?
  • 是的,我正在阅读,但还是什么都不懂

标签: java math trigonometry


【解决方案1】:

我不知道弧度和度数等之间的差异。

这并不完全是这个网站,但这里有一个简单的解释。弧度和度数是 2 个测量单位(如公里和英里)。一个圆有 360 度,或 2π 弧度。这意味着

1 degree = π/180 (0.0174533) radians
1 radian = 180/π (57.2958) degrees

圆上使用弧度的 4 个基本方向是 0 或 2π、π/2、π、3π/2,对应于 0 或 360、90、180、270 度。

我想让球移动到某个方向,就像我给出的数字从 0 到 360 一样

现在到您的代码。您在该行中有语法错误

float moveX += speed * Math.cos(Math.toRadians(angle));

你刚刚声明了moveX,所以你不用+=添加它,你只需用=分配它。与moveY 相同。现在如果你在之后打印xy

x += moveX;
y += moveY;

你会得到正确的结果。我不知道为什么之后你将它们设置为 0 - 你会失去球的位置。

【讨论】:

  • 哦,对不起,“浮动”发生了意外,我的真实代码中没有。在将 moveX 和 Y 添加到我的球 x 和 y 之后,我将它们设置为 0。
  • @Maineri 然后下一次为避免这种情况发布minimal reproducible example。那么这能解决你的问题吗?
  • 不太好。。我觉得我这个人太简单了,看不懂。
  • @Maineri Weel,此代码符合您的描述。如果您可以检查您的代码是否无效,那么您可以检查此代码是否有效。
【解决方案2】:

在循环之前实例化 moveX 和 moveY

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多