gpt4 book ai didi

ios - 如何让 Sprite 节点在用户点击屏幕时旋转? swift 3

转载 作者:可可西里 更新时间:2023-11-01 00:03:09 24 4
gpt4 key购买 nike

我希望实现的结果:我有一个节点,它几乎是一个带辐条的自行车车轮。当用户用胶带粘住屏幕时,我希望轮子不仅会弹跳,而且会随着每次点击而旋转。

我现在拥有的:节点当前会在用户点击屏幕时反弹,就像它应该的那样。但是它不旋转。

我仍在学习 Swift,因此非常感谢任何帮助或建议。

代码:

    wheelNode = SKSpriteNode(imageNamed: "wheel")
wheelNode.zPosition = 1
wheelNode.position = CGPoint(x: self.frame.midX, y: self.frame.midY)
wheelNode.physicsBody = SKPhysicsBody(circleOfRadius: wheelNode.size.width / 0.70)
wheelNode.physicsBody?.isDynamic = true
wheelNode.physicsBody?.allowsRotation = true

self.addChild(wheelNode)

override func touchesBegan(_ _touches: Set<UITouch> , with event: UIEvent?) {
if gameOver == false {

self.wheelNode.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
self.wheelNode.physicsBody?.applyImpulse(CGVector(dx: 5, dy: 25))

}

}

最佳答案

要使 SKSpriteNode 旋转,请将其添加到 touchesBegan:

wheelNode.run(SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat.pi * 2.0, duration: 2)), withKey: "rotateWheel")

要以相反的方向旋转,将CGFloat.pi更改为-CGFloat.pi

您可以调整持续时间以更改完整旋转的持续时间。

touchesEnded 中,要停止操作,请调用:

removeAction(forKey: "rotateWheel")

这样,轮子的旋转就不会受到物理世界的影响。如果您想要一种不同的方式来进行旋转,请查看此链接(并阅读@Knight0fDragon 的评论):https://stackoverflow.com/a/39779986/6728196

但是逻辑仍然是一样的。因为您需要在 touchesBegan 中开始旋转,然后在 touchesEnded 中结束/停止它。

关于ios - 如何让 Sprite 节点在用户点击屏幕时旋转? swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208266/

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