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 中。