Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Ios 在两个对象完成操作后,如何确定指示器显示的部分?_Ios_Swift_Graphics_Sprite Kit - Fatal编程技术网

Ios 在两个对象完成操作后,如何确定指示器显示的部分?

Ios 在两个对象完成操作后,如何确定指示器显示的部分?,ios,swift,graphics,sprite-kit,Ios,Swift,Graphics,Sprite Kit,我有一个车轮精灵节点如下,它可以旋转不同的速度,方向,角度。此外,我有一个指示器,它可以旋转不同的功能(如我上面提到的轮子),点击按钮后,首先我删除指示器的UIBezierPath跟随操作,同时删除我轮子上的所有操作 这是我的问题。一切停止之后。如何确定/处理该指示器指向的颜色 我无法创建关系指示器的zRotation和控制盘的zRotation。我能从第一个状态得到一个旋转角度吗。但如果我继续,第一种状态就会改变 如果有人解释这个案子,那就太好了 指标返回的更新: 更新指示灯返回这些值(与方

我有一个车轮精灵节点如下,它可以旋转不同的速度,方向,角度。此外,我有一个指示器,它可以旋转不同的功能(如我上面提到的轮子),点击按钮后,首先我删除指示器的UIBezierPath跟随操作,同时删除我轮子上的所有操作

这是我的问题。一切停止之后。如何确定/处理该指示器指向的颜色

我无法创建关系指示器的zRotation和控制盘的zRotation。我能从第一个状态得到一个旋转角度吗。但如果我继续,第一种状态就会改变

如果有人解释这个案子,那就太好了

指标返回的更新:

更新指示灯返回这些值(与方向无关)

车轮角度返回值以正或负逐渐增加(取决于车轮的旋转方向)

正如@Whirlwind所描述的,您只需要将每个角度映射到一种颜色

func colorName(byRotationOf wheel: SKSpriteNode) -> String {
    let degree = wheel.zRotation * 180 / .pi
    switch degree {
    case 0..<45: return "Dark Green"
    case 45..<90: return "Dark Blue"
    case 90..<135: return "Purple"
    case 135..<180: return "Bordeaux"
    case 180..<225: return "Red"
    case 225..<270: return "Orange"
    case 270..<315: return "Green"
    case 315..<360: return "Blue"
    default: fatalError()
    }
}

我猜有几种方法,但我们可以这样说:一个圆有360度。将每个45度映射为特定颜色。因此,根据圆圈的Z旋转,确定颜色。谢谢,但我的指示器也可以返回圆圈,当我停止时,车轮将同时停止(连接相同的按钮)。如何获得到达车轮交叉点的bezeir路径的角度颜色?我刚刚更新了bezeir路径功能的问题,它也可以在没有反向()的情况下沿着路径旋转。
rad
是否表示指示器的旋转?
rad
是从反正切函数开始的角度。感谢您对问题的关注,我现在将检查您的最新更新。再次您好,我检查了它,它表明RANGLE没有逐渐增加/减少值,因此有时会崩溃。我解释了我遇到的最新问题。我认为这两个方向都需要通用。请检查一下好吗?
 let dx = person.position.x - self.size.width / 2
 let dy = person.position.y - self.size.height / 2

 let rad = atan2(dy, dx)
 var indicatorAngle = (rad * 180 / .pi).truncatingRemainder(dividingBy: 360)
 var wheelAngle = (wheel.zRotation * 180 / .pi).truncatingRemainder(dividingBy: 360)
func colorName(byRotationOf wheel: SKSpriteNode) -> String {
    let degree = wheel.zRotation * 180 / .pi
    switch degree {
    case 0..<45: return "Dark Green"
    case 45..<90: return "Dark Blue"
    case 90..<135: return "Purple"
    case 135..<180: return "Bordeaux"
    case 180..<225: return "Red"
    case 225..<270: return "Orange"
    case 270..<315: return "Green"
    case 315..<360: return "Blue"
    default: fatalError()
    }
}
func colorName(by wheel: SKSpriteNode, indicatorRotation: CGFloat) -> String {
    let wheelAngle = (wheel.zRotation * 180 / .pi).truncatingRemainder(dividingBy: 360)
    let indicatorAngle = (indicatorRotation * 180 / .pi).truncatingRemainder(dividingBy: 360)
    let deltaAngle = indicatorAngle - wheelAngle

    let slice = Int(deltaAngle / 45)
    let colorNames = ["Dark Green", "Dark Blue", "Purple", "Bordeaux", "Red", "Orange", "Green", "Blue"]
    return colorNames[slice]
}