gpt4 book ai didi

Swift-在一个角度上简单地制作一个 SKNode "move forward"

转载 作者:搜寻专家 更新时间:2023-11-01 07:16:47 26 4
gpt4 key购买 nike

我已经在这里以不同的方式问过这个问题; Swift-Setting a physics body velocity by angle但不幸的是,这三个答案的尝试并不是我想要的,尽管我很感激他们教给我的东西。我决定我应该简单地用一个例子和进一步的解释来改写我的问题,而不是通过评论来延续讨论。所以就在这里。

假设我有一个 SKNode 位于屏幕中央。假设这是一个球,因此它上面的任何旋转 Action 都是不可见的。我需要一种方法来选择一个随机角度,并让 SKNode 旋转到它,然后从屏幕中心的原始位置开始沿着上述角度确定的方向连续移动,直到边缘屏幕。

我知道如何确定随机角度,让 SKNode 旋转到它,并让它停在屏幕边缘。希望通过这个示例,我需要的更清楚,一种简单地让 SKNode 向前移动的方法,但是在由单个变量确定的角度上,而不是由两个 dx 和 dy 确定的速度。

提前致谢。

最佳答案

为此,您只需要使用一些三角函数!

zRotation 介于 0 和 90 之间时,除了将其转换为弧度外,您不需要对角度做任何操作。只需调用 tan(radianAngle)。现在 tan 将返回节点在 x 轴上移动 1 时应在 y 轴上移动多少。如果你以前学过三角函数,你应该明白我在说什么。如果您还没有学过三角函数,请学习它。 :)

假设节点的 zRotation 为 60 度,即 π/3 弧度。将其传递到 tan 中,您会得到 √3。这意味着您在 SKAction 中的 dxdy 参数的比例必须为 1 : √3 才能使节点沿该方向移动60 度。

zRotation 介于90 和180 之间时,需要先用180 减去角度,然后将其转换为弧度。同样,将其传递给 tan,返回值是节点在 x 轴上移动 -1 时应在 y 方向上移动多少。 dx : dy 比率现在是 -1 : tan(angleInRadians)。

zRotation 介于 180 和 270 之间时,从该角度减去 180 并将其转换为弧度。 dx : dy 比率为 -1 : -tan(angleInRadians)。

最后,在 270 度和 360 度之间的 zRotation,从 360 度减去角度并将其转换为弧度。 dx : dy 比率为 1 : -tan(angleInRadians)。

在将角度转换为弧度之前,请检查角度是否为 90 度。如果是,请对 dxdy 进行硬编码,因为 tan(M_PI/2) 未定义。

关于Swift-在一个角度上简单地制作一个 SKNode "move forward",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758357/

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