Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 斯威夫特简单地制作了一个SKNode;“向前迈进”;角度_Swift_Xcode_Angle_Skaction_Sknode - Fatal编程技术网

Swift 斯威夫特简单地制作了一个SKNode;“向前迈进”;角度

Swift 斯威夫特简单地制作了一个SKNode;“向前迈进”;角度,swift,xcode,angle,skaction,sknode,Swift,Xcode,Angle,Skaction,Sknode,我已经用另一种方式问了这个问题;但不幸的是,这三次尝试的回答并不是我想要的,尽管我很感激他们教给我的东西。我决定我应该简单地用一个例子和进一步的解释来重新表述我的问题,而不是通过评论来持续讨论。就是这样 想象一下,我有一个位于屏幕中央的SKNode。假设这是一个球,所以它上的任何旋转动作都不可见。我需要一种方法来选择一个随机角度,并让SKNode旋转到它,然后从屏幕中心的原始位置开始,沿着前面提到的角度确定的方向连续移动,直到屏幕边缘 我知道如何确定随机角度,让SKNode旋转到它,并让它停在屏

我已经用另一种方式问了这个问题;但不幸的是,这三次尝试的回答并不是我想要的,尽管我很感激他们教给我的东西。我决定我应该简单地用一个例子和进一步的解释来重新表述我的问题,而不是通过评论来持续讨论。就是这样

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

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


提前谢谢。

要做到这一点,你只需要使用一些三角函数

zRotation
介于0和90之间时,除了将角度转换为弧度之外,无需对角度执行任何操作。只需调用
tan(弧度角)
。现在
tan
将返回当节点在x轴上移动1时,它在y轴上应该移动多少。如果你以前学过三角学,你应该明白我在说什么。如果你还没有学过三角学,那就去学吧。:)

假设节点的旋转度为60度,即π/3弧度。将其传递到
tan
中,您将获得√3.这意味着
SKAction
中的
dx
dy
参数必须为1:√3以使节点沿60度方向移动

zRotation
介于90和180之间时,需要首先从180减去角度,然后将其转换为弧度。再次,将该值传递到
tan
,返回值是节点在x轴上移动-1时在y方向上移动的量。
dx:dy
比率现在为-1:tan(角半径)

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

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

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