- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在使用 SpriteKit 和 GameplayKit 开发一个小项目。这是我第一次使用实体/组件系统,我很喜欢它。但是现在,我需要跟踪我的实体状态(产卵、正常、移除),这样它们在产卵阶段就不会相
主题 我的问题是关于在结合 Apple 的框架时更新周期的划分,以便尊重该主题的典型模式和良好实践,因为大多数文档和示例代码还没有适应 Swift(或者至少我可以)在任何地方都找不到)。 在 Game
最近我开始从 Xcode 中收到此错误: Error Screenshot 这个 'className' 属性属于 NSObject。 Here is the official documentati
更新到 swift3 后,注释行返回错误: 类型为“GKEntity!”的属性“实体” (又名“ImplicitlyUnwrappedOptional”)无法覆盖类型为“GKEntity?”的属性 i
我正在尝试运行这一行: guard let spriteComponent = entity?.componentForClass(SpriteComponent.self) else { re
我正在尝试检测 SceneKit 中两个 scnnode 的交集。它们注册为 GKEntities。我想将一个组件关联到两个实体,这两个实体将使用 SCNPhysicsContactDelegate
我是一名优秀的程序员,十分优秀!