Где враги движутся со всех сторон на экран. Падающих врагов было легко сделать с помощью гравитации.
Но как я могу заставить врага двигаться вдоль оси х или вниз по экрану к вершине?
Вы можете использовать SKAction для этого:
let moveAction = SKAction.moveBy(x: 100, y: 100, duration: 2) entity.run(moveAction)
Это переместит ваш узел вверх и вправо.
Если вы действительно хотите перемещать объекты через гравитацию, вы можете использовать Linear Gravity SKFieldNode https://developer.apple.com/documentation/spritekit/skfieldnode
Путем создания «вертикального» поля линейной гравитации и «горизонтального» узла линейного поля и правильного использованияfieldBitMask, некоторые объекты могут падать вертикально, так как на них воздействует вертикальное гравитационное поле, а другие объекты падают горизонтально из-за горизонтального гравитационного поля.
fieldBitMask
Тогда вам может не понадобиться гравитация, отключите affectedByGravity на всех ваших вражеских узлах, затем используйте SKAction SKAction.moveBy(x:y:duration:), чтобы враги двигались в определенном направлении
affectedByGravity
SKAction.moveBy(x:y:duration:)