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