【发布时间】:2014-06-16 08:18:38
【问题描述】:
您好,我的问题是关于两个精灵的旋转。当我触摸屏幕的右半部分时,旋转开始并移动 sprite2 和 sprite3。如果我触摸屏幕的左半部分,则旋转停止,因为速度-速度 = 0。如果我再次触摸左半部分,则旋转开始。
但是,如果我触摸与当前旋转方向相对应的屏幕的一半,则速度会重复。我希望能够改变旋转的方向,但速度保持不变。
演示问题的视频:http://youtu.be/HxLwl1QZiNM
import SpriteKit
class GameScene: SKScene {
let sprite = SKSpriteNode(imageNamed:"bWhite")
let sprite2 = SKSpriteNode(imageNamed:"bBlue")
let sprite3 = SKSpriteNode(imageNamed:"bRed")
let circle = SKSpriteNode(imageNamed:"bCircle")
override func didMoveToView(view: SKView) {
/* Setup your scene here */
backColor = SKColor(red: 0, green: 0, blue: 0, alpha: 1)
self.backgroundColor = backColor
sprite.setScale(1.25)
sprite2.setScale(1)
sprite3.setScale(1)
sprite.position = CGPointMake(self.frame.size.width/2, (self.frame.size.height/2)-200);
circle.position = CGPointMake(self.frame.size.width/2, (self.frame.size.height/2)-200);
sprite3.zRotation = 172.77
sprite2.anchorPoint = CGPointMake(-1.10, 0.5);
sprite3.anchorPoint = CGPointMake(-1.10, 0.5);
self.addChild(sprite)
self.addChild(circle)
sprite.addChild(sprite2)
sprite.addChild(sprite3)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
let action2 = SKAction.rotateByAngle(CGFloat(-M_PI), duration:1)
if (location.x > self.frame.size.width / 2)
{
sprite2.runAction(SKAction.repeatActionForever(action2))
sprite3.runAction(SKAction.repeatActionForever(action2))
} else {
sprite2.runAction(SKAction.repeatActionForever(action))
sprite3.runAction(SKAction.repeatActionForever(action))
}
}
}
【问题讨论】:
-
所以看看我是否理解正确:您希望圆圈开始按初始触摸指示的方向旋转。在此之后您只想能够切换方向,而不是完全停止它?
-
这正是我想要的
-
我想在触摸左半边屏幕时向左旋转,如果我不触摸停止并且如果我触摸右半边屏幕向右旋转
-
对不起,除了旋转还要移动,还是说要根据触摸的位置触发旋转?
-
如果我触摸屏幕的左半部分向左旋转如果停止触摸左停止旋转,则不动。如果我触摸屏幕的右半部分向右旋转,如果停止触摸右停止旋转,则不动。
标签: ios rotation sprite-kit swift ios8