Угловое движение с SKActions SKSпритеноде - PullRequest
0 голосов
/ 05 сентября 2018

Я случайно породил узлы SKSpriteNode слева и справа от экрана. Они должны просто пройти через экран, а затем узел будет удален. Они делают то, что я хочу, но у меня есть прямолинейное движение, я хочу, чтобы они двигались под углом (позже, случайным образом)

Это то, что у меня есть

// эти строки просто для того, чтобы создать 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 rotate, но затем вращается только спрайт, и он все еще движется горизонтально

Ценю любую помощь

1 Ответ

0 голосов
/ 15 октября 2018

Вам просто нужно добавить случайный элемент к значению y::

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

Это MoveBy, и вы сказали ему двигаться на 0 пунктов по вертикали, поэтому, естественно, он будет двигаться прямо поперек. Вращение узла не влияет на направление, в котором он движется.

...