【发布时间】:2019-10-23 17:34:26
【问题描述】:
我正在 Swift 上制作 2D 平台游戏,我希望当玩家被武器击中时屏幕会抖动。我尝试了几种不同的解决方案,比如只让背景精灵摇晃,但效果并不相同。我在网上找到了创建一个抖动函数的代码,我相信它会抖动屏幕,但唯一的问题是我不知道如何在我的 GameScene 中调用它,因为它是在我的类之外定义的。例如,我的代码如下所示:
class GameScene: SKScene, SKPhysicsContactDelegate {
// code
func didBegin(_ contact: SKPhysicsContact) {
// call shake function
}
}
extension UIView {
func shake() {
let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
animation.duration = 0.6
animation.values = [-20, 20, -20, 20, -10, 10, -5, 5, 0]
self.layer.add(animation, forKey: "shake")
}
}
我想在我的代码中显示“调用摇动功能”的地方调用摇动功能。我该怎么称呼它?
【问题讨论】:
-
我对 SpriteKit 了解不多,但所有 UIView 实例现在都应该有一个名为“shake()”的新函数。但我不认为 SKScene 是 UIView 的子类,所以这行不通。
标签: swift xcode sprite-kit