RealityActions 将流行的 Cocos2D 风格的动作框架 带到 RealityKit 中的实体。
请浏览 API 文档。
要使用,请通过 SwiftPM 引用此模块
https://github.com/migueldeicaza/RealityActions
要使用此框架,您必须首先向 RealityKit 注册 Action 框架。在程序启动时,请确保您有类似以下的代码
ActionManagerSystem.registerSystem()
然后,您可以在实体上执行许多可用的动作之一。这是一个在游戏中移动实体的代码片段
class SmallPlate: Weapon {
override var reloadDuration: Duration { .milliseconds(450) }
override var damage: Int { 10 }
override func fire (byPlayer: Bool) async {
//let distance: Float = 10
guard let parent = await entity.parent else {
return
}
@Sendable func fire (to: SIMD3<Float>) async {
let bullet = await createRigidBullet(byPlayer: byPlayer, size: size)
await bullet.addChild(smallPlateEntity.clone(recursive: true))
await parent.addChild(bullet)
await bullet.run(MoveBy(duration: 3, delta: to))
await bullet.removeAllActions()
await bullet.removeFromParent()
}
await fire (to: [Float.random(in: -3...3), -2, 0])
}
}
这个代码片段让一架小型飞机每 5 秒旋转一次
airplane.start (RepeatForever (
DelayTime(duration: 5),
EaseBackOut(
RotateBy(duration: 1, deltaAngles: SIMD3<Float> (0, 0, 360)))))
动作框架起源于 Cocos2D。Cocos2D 衍生出各种不同的项目,其中包括一个到 .NET 的移植,这促成了 CocosSharp,后来它被移植到 3D 引擎 UrhoSharp。
我移植了 UrhoSharp 代码库,它增加了一些 3D 功能,并使用 Async 添加了各种巧妙的功能到 Swift 和 RealityKit 中。