Добавление UIFieldBehaviour в SKScene в коде - PullRequest
0 голосов
/ 20 октября 2018

iOS 12.x Swift 4.2

Я пытаюсь добавить UIFieldBehaviour в простую космическую игру в коде и с трудом.Я знаю, что могу заставить его работать, если я использую интерфейс XCode, но хочу / нужно добавить его в код, чтобы я мог «перемещать» его.Я разработал этот код, и он имеет эффект, но тот, который, безусловно, странный и совершенно неправильный [он сдвигает SKSprite, который не является динамическим] при запуске, а затем абсолютно ничего не делает ...

let solarWind = UIFieldBehavior.radialGravityField(position: CGPoint(x: -320, y: 0))
solarWind.region = UIRegion(size: CGSize(width: 750, height: 750))
solarWind.strength = 0.5
solarWind.falloff = 2
solarWind.minimumRadius = 0.05
animator = UIDynamicAnimator(referenceView: (scene?.view!)!)
animator?.setValue(true, forKey: "debugEnabled")
animator?.addBehavior(solarWind)

Я добавляю этот код в мой

override func didMove(to view: SKView) 

в моем GameScene.swift.У меня есть только один спрайт в сцене, который является динамическим, и он должен на него воздействовать, но это не так!

Аниматор определен как переменная класса, например:

var animator: UIDynamicAnimator?

КакЯ говорю, что это работает, как и ожидалось, если я добавлю его с помощью XCode, так что на самом деле эти несколько строк не так!Оскорбительная строка - это ...

let solarWind = UIFieldBehavior 

Могу ли я выполнить этот код где-нибудь еще?Попробовал и это тоже, но он исправил это частично, так как в нем больше ничего не перемешалось, но в игре не было никакого эффекта, как в ничего не делает.

var solarWind: UIFieldBehavior = UIFieldBehavior.radialGravityField(position: CGPoint(x: -320, y: 0))

Итак, я попытался выполнить код 4через несколько секунд после запуска приложения и его просмотра.Я тоже нашел это Strange SpriteKit + UIDynamics Bug , который, я думаю, отвечает на мой вопрос, о котором сообщалось в iOS 9.x;два года назад !!

...