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上发布;两年前!