gpt4 book ai didi

swift - 如何将此类激活给另一个

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:21 25 4
gpt4 key购买 nike

我对在我的主要 GameplayScene 中使用另一个类有疑问。我想要做的是让手机 X 轴的运动左右移动角色。这是我的 MotionClass.swift 中的内容

import SpriteKit
import CoreMotion

class MotionClass: SKScene {

var player: Player?

var motionManager = CMMotionManager()
var destX: CGFloat = 0.0

override func sceneDidLoad() {

motionManager.accelerometerUpdateInterval = 0.2
motionManager.startAccelerometerUpdates(to: OperationQueue.current!) { (data, error) in
if let myData = data {

let currentX = self.player?.position.x

if myData.acceleration.x > 0.2 {
self.destX = currentX! + CGFloat(myData.acceleration.x * 100)
print("Tilted Right")

} else {

if myData.acceleration.x < -0.2 {
self.destX = currentX! + CGFloat(myData.acceleration.x * 100)
print("Tilted Left")
}
}
}
}
}

override func update(_ currentTime: TimeInterval) {

let action = SKAction.moveTo(x: destX, duration: 1)
self.player?.run(action)
}

}

现在我正尝试在我的 GameplayScene.swift 中的 motionBegan 函数中调用此类,但我不知道该怎么做。我有变量 'grapple' 作为 MotionClass?但我不知道从那里去哪里。任何人都可以举一个很好的例子吗?

最佳答案

我认为您可能对 SKScene 子类的用途感到困惑,这就是您当前的 MotionClass。 (主要思想)是一次只使用一个 SKScene:如果你需要 MotionClass 的东西,那么你应该把它做成一个普通类,而不是 SKScene 子类。

我认为您可能还需要更加熟悉 OOP...在 static 属性/函数之外,您不会“调用”一个类,您 实例化它(你创建一个对象:])

因此,如果您想在 GamePlayClass 中访问 MotionClass 中的好东西,您需要对 MotionClass 对象的引用

这可以通过一个简单的全局变量来完成...我建议将其放入您的 GameViewController.swift 中:

// Here is a global reference to an 'empty' motion class object..
var global_motionClassObject = MotionClass()

class GameViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// ...
if let view = self.view as! SKView? else {
let scene = MotionClass(size: view.frame.size)
// Assign our global to the new scene just made:
global_motionClassObject = scene
scene.scaleMode = .aspectFit

view.presentScene(scene)
}

// ...
}

现在在您的 GamePlayClass 内部,或其他任何地方,您可以通过调用 global_motionClassObject 访问 MotionClass

但是,这可能不会给出预期的结果,因为我担心您可能需要将您的 MotionClass 重组为 SKScene 以外的东西:)

关于swift - 如何将此类激活给另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43808237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com