我从屏幕左右左右随机生成了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旋转它使其旋转,但是只是精灵旋转了,它仍然水平移动了
感谢任何帮助
答案 0 :(得分:1)
您只需要在y:
的值中添加一个随机元素:
let moveRandomObj = SKAction.moveBy(x: (-leftOrRight)*distance + 100,
y: 0, duration: TimeInterval(0.008 * distance))
这是一个MoveBy
,您已经告诉它可以垂直移动0点,因此自然可以直接移动。节点的旋转与它的移动方向无关。