SKActions SKSpritenode的角运动

时间:2018-09-05 08:48:02

标签: ios swift sprite

我从屏幕左右左右随机生成了SKSpriteNodes。它们应该只在屏幕上运行,然后删除该节点。它们可以满足我的要求,但我只能笔直移动,我希望它们以一定角度移动(后来随机创建)

这就是我所拥有的

//这些行仅用于创建SpriteNode并将其放置在屏幕之外

let randomObj = SKSpriteNode(imageNamed: "randomObj")

let leftOrRight:CGFloat = arc4random_uniform(2) == 0 ? 1 : -1

randomObj.position = CGPoint(x: CGFloat(leftOrRight)*(self.frame.width 
+ randomObj.frame.width), y: random(min:0 , max: self.frame.height))
    self.addChild(randomObj)

//这是运动->遍历屏幕并删除

let distance = CGFloat(self.frame.width*2)
let moveRandomObj = SKAction.moveBy(x: (-leftOrRight)*distance + 100, 
y: 0, duration: TimeInterval(0.008 * distance))
let removeRandomObj = SKAction.removeFromParent()
let moveAndRemove = SKAction.sequence([moveRandomObj, removeRandomObj])
randomObj.run(moveAndRemove)

我尝试通过SKAction旋转它使其旋转,但是只是精灵旋转了,它仍然水平移动了

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

您只需要在y:的值中添加一个随机元素:

let moveRandomObj = SKAction.moveBy(x: (-leftOrRight)*distance + 100, 
y: 0, duration: TimeInterval(0.008 * distance))

这是一个MoveBy,您已经告诉它可以垂直移动0点,因此自然可以直接移动。节点的旋转与它的移动方向无关。