从这里的GameplayKit开始,我在建模一个没完没了的跑步者,播放器可以通过点击屏幕在字符之间交换。字符首先可以攻击的近程(组件)、第二跳(组件)和第三次射(组件)。
我想知道在这两个之间建模的最佳方法是什么
这是一个真正的大项目,所以我担心的是最佳方式,以使代码在很长一段时间内都是可访问和可读的。
Ps:.SpriteComponent将是负责所有实体在.sks上的可视化表示的组件。
Ps2:。如果可能的话,可以迅速地举一些例子。
谢谢您抽时间见我。
发布于 2016-03-06 13:28:53
除了使用组件之外,它还取决于您所做的事情以及每个字符所做的事情。使用gameplayKit,我可能更喜欢创建实体类,而不是仅仅创建类。
您是否考虑过只使用一个player实体,而不是当您更改字符时,您只是删除/添加该字符的组件。
假设您从“攻击”更改为“跳转”,则可以删除攻击组件。
player.removeComponent....并添加跳跃组件。
let jumpingComponent = ...
player.addComponent(jumpingComponent)通常,您希望确保组件尽可能灵活和通用。例如,您的spriteComponent应该在init方法中使用图像字符串/纹理,这样您就可以向每个实体添加相同的组件,但使用不同的图像。
class SpriteComponent: GKComponent {
let node: SKSpriteNode
init(texture: SKTexture) {
node = SKSpriteNode(texture: texture, color: SKColor.clearColor(), size: texture.size())
}
}现在,您可以在使用不同的图像时向每个字符添加相同的组件。
let character1Texture = SKTexture(imageNamed: "Character 1 image"
let spriteComponent = SpriteComponent(texture: character1Texture)
addComponent(spriteComponent)你的动画和其他组件也是如此。
我对待它的方式是这样的。
假设我有一个游戏,其中我有10个类型的敌人,或多或少是相同的。我可能会尝试只有一个敌人的实体类,将所有的组件使用所有10个敌人。而不是添加相关组件,这些组件动态地或基于init方法中传递的enumType使每个组件都是唯一的。
另一方面,假设我有3个主要人物,他们都做着非常独特的事情,也许仅仅创建3个实体类就更容易和更干净了。另外,不要忘记子类,这样您就可以创建一个包含所有共享组件的实体类,而不是其他两个实体的子类。
苹果在DemoBots中就是这样做的,他们有一个TaskBot实体,而不是一个FlyingBoy实体和一个GroundBot实体,这两个实体都是TaskBot的子类。
这真的取决于你。
https://stackoverflow.com/questions/35823426
复制相似问题