首页 > 解决方案 > 使用 SKActions SKSpritenode 进行角运动

问题描述

我在屏幕上左右随机生成了 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 旋转来给它一个旋转,但是只有精灵被旋转了,它仍然水平移动

感谢任何帮助

标签: iosswiftsprite

解决方案


您只需向 的y:值添加一个随机元素:

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

这是 aMoveBy并且你已经告诉它垂直移动 0 点,所以它自然会直接移动。节点的旋转与它移动的方向无关。


推荐阅读