尝试按下按钮将精灵的 zRotation 增加 1 度时旋转不正确
Posted
技术标签:
【中文标题】尝试按下按钮将精灵的 zRotation 增加 1 度时旋转不正确【英文标题】:getting incorrect rotation when trying to increment a sprite's zRotation by 1 degree with button press 【发布时间】:2017-06-11 06:33:24 【问题描述】:我有一个简单的矩形精灵,我希望每次按下屏幕上的按钮时都将这个精灵旋转 1 度。我有一些我希望可以工作的简单代码,但它给出了奇怪的结果。它似乎不是将矩形旋转 1 度,而是每次点击至少将其旋转 180-270 度。
var degrees = 0
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
let touch = touches.first
let touchLocation = touch!.location(in: self)
let beam = childNode(withName: "beam") as! SKSpriteNode
if let body = physicsWorld.body(at: touchLocation)
if body.node!.name == "leftTap"
print("Began touch on Left")
beam.zRotation = CGFloat(degrees)
degrees = degrees + 1
else
print("Began touch on right")
在 GameScene.sks sprite 属性检查器中,您可以通过按“+”或“-”按钮来增加旋转。我想这会以同样的方式工作,但我一定不了解这里的轮换原则。
任何建议将不胜感激。
【问题讨论】:
【参考方案1】:不是度数,是弧度。 3 左右 (pi) 的值是一个完整的旋转。
https://developer.apple.com/documentation/spritekit/sknode/1483089-zrotation
这是一个方便的扩展,您可以使用:
extension SKNode
// Usage is node.rotateBy(45) etc:
func rotateBy(_ degree: CGFloat)
let conversionFactor = CGFloat(0.01745329252)
self.run(.rotate(byAngle: degree * conversionFactor, duration: 0))
【讨论】:
谢谢,我会调查的! .sks 我怎么能增加一级? @genericguy25 哈哈,问苹果。如您所见,这些东西的设计不一定完美;) @genericguy25 等一下,让我做一个函数让你帮忙 谢谢!我将如何使用扩展程序?我之前没用过很多扩展 @genericguy25 等一下,我这里有个错误。以上是关于尝试按下按钮将精灵的 zRotation 增加 1 度时旋转不正确的主要内容,如果未能解决你的问题,请参考以下文章