gpt4 book ai didi

sprite-kit - GKEntity 和状态机

转载 作者:行者123 更新时间:2023-12-04 14:27:58 24 4
gpt4 key购买 nike

我正在使用 SpriteKit 和 GameplayKit 开发一个小项目。这是我第一次使用实体/组件系统,我很喜欢它。但是现在,我需要跟踪我的实体状态(产卵、正常、移除),这样它们在产卵阶段就不会相互作用(这可能包括也可能不包括为事物设置动画的 Action )和他们的删除阶段。

到目前为止,我已经创建了一个 EntityStateComponent,它实例化了一个具有不同状态的 GKStateMachine,并且由于不需要每帧更新,所以并不那么复杂。问题是这个状态比组件相关更多的是实体相关,我想知道从 GKEntity 继承并在其中而不是在组件中添加状态机是否有意义。

你的想法?

PS:我已经从 GKEntity 进行子类化,只是为了有一个方便的 init() 来创建所有组件

最佳答案

你是对的,状态是实体相关的,而不是组件相关的。将状态机直接放入实体中,或者创建一个实体基类,您的所有实体都从中继承。

class VisualEntityBase : GKEntity, VisualEntity {
var node: SKSpriteNode!
var stateMachine: GKStateMachine!


// MARK: Initialization

init(imageNamed: String, atStartPosition: CGPoint) {
super.init()

// Initialise Texture
let texture = SKTexture(imageNamed: imageNamed)

// Initialise Node
self.node = SKSpriteNode(texture: texture, size: texture.size())
self.node.position = atStartPosition

// Initialise StateMachine
self.stateMachine = GKStateMachine(states: [
VisualEntityIdle(),
VisualEntityPendingMove(),
VisualEntityMoving()
])

self.stateMachine.enter(VisualEntityIdle.self)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

关于sprite-kit - GKEntity 和状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41490090/

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