【问题标题】:Best practice using GKStates and PhysicsBody operations使用 GKStates 和 PhysicsBody 操作的最佳实践
【发布时间】:2018-07-16 11:21:25
【问题描述】:

我正在使用 GameplayKit、基于实体组件框架并利用 GKStates 开发游戏。

我想知道以下方面的最佳做法:

我有一个名为 Person 的游戏实体。这个人在现场徘徊做自己的事。他们在 WANDER GKState 中。如果他们撞到另一个人,他们就会开始聊天,或者打架……

我的问题是,我应该把接触物理代码放在哪里?应该放在 Person 的 OnContactBegin 方法中还是应该放在 WANDER GKState 中,继承支持 OnContact 方法的物理组件?

任何一种方法都有效,但最干净或首选的方法是什么?目前,代码都在 Person 实体中,但是随着更多行为的添加,OnContact 方法变得越来越庞大和不守规矩,我开始认为我应该将代码放在各种 GKStates 中。

有什么建议吗?

【问题讨论】:

    标签: swift state-machine skphysicsbody gameplay-kit


    【解决方案1】:

    其实GKStateMachine 是经典的Finite-state machine。所以最好的办法就是通过外部事件将状态机切换到合适的状态。

    【讨论】:

    • 所以我理解这句话的意思是在我的班级 Person 的 OnContact 方法中,我应该检查各种状态,例如我在触摸另一个人,进入聊天状态吗?或者我已经处于聊天状态并且仍在触摸另一个人,移动到战斗状态。可能是时候绘制图表了...
    • 不知道你要实现什么样的逻辑。但通常状态切换是由于事件而发生的。例如,游戏单元处于“前进”状态,然后遇到障碍物——这是一个切换到“右转”状态的事件……等等。
    • 我决定不在我的状态中进行物理身体接触检查,因为我在某处读到状态机内的计算资源分配减少和限制,可能是因为你上面所说的。
    猜你喜欢
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2017-08-15
    • 2021-05-17
    • 2017-09-06
    • 1970-01-01
    相关资源
    最近更新 更多