gpt4 book ai didi

ios - 复杂的敌人行为和模式

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:45 24 4
gpt4 key购买 nike

我想在我的 SpriteKit 游戏中稍微改变一下我的敌人。他们是如此......可以预测。 《以撒的结合:重生》中遇到的各种敌人启发了我。

例如,假设我想实现在 enemy.health < 50.0f 时 split 成两个较小的敌人的敌人。 .在一个简单的场景中,这可以通过遍历我所有的敌人从我的主场景更新循环来完成。像这样的东西:

if(enemy.health < 50 && enemy.type == kEnemyTypeSplitsIntoTwo) {
CGPoint position1 = CGPointMake(enemy.position.x+20,enemy.position.y);
CGPoint position2 = CGPointMake(enemy.position.x-20,enemy.position.y);
[enemy killEnemy];
[self spawnNewEnemyWithType:enemyType andHealth:50 atPosition:position1];
[self spawnNewEnemyWithType:enemyType andHealth:50 atPosition:position2];
}

这可能适用于简单的情况。但这是我绝对想避免出现在我的主场景更新循环之外的东西。问题是我的敌人类实际上是 SKSpriteNode 的子类.

对于这种情况,理想情况下我想要一个新类,例如 ComplexEnemyEnemyGroup类来处理这个,这样我就可以实现更复杂的敌人行为和模式(想想史诗般的 boss 战斗有多个阶段)。我想这个新类可能会派生自 SKNode (甚至 NSObject ?)并生成多个 Enemy在某些点的实例。

我的思路是否正确?我很想知道人们用什么方法来实现这种行为,最好是举几个例子。

-直流

tl;dr - 成群结队的敌人,具有多个阶段的 Boss。你们是怎么做到的?

最佳答案

使用SKSpriteNode作为敌人类没有错。我一直这样做。例如,如果您想添加一个健康栏,您只需将其添加为子项即可。

您的问题主要是基于意见,因此希望它能尽快结束。然而,这仍然是一个很好的问题。我建议您使用一个或多个敌人 SKSpriteNode 类来处理您的工作量,因为它可以使初学者更轻松。您当然可以只使用一个敌人类并让它的更新方法根据属性处理各个方面。例如:

-(void)update:(NSTimeInterval)currentTime {

if(self.enemyType == kDragon) {
// do big stuff
}

if(self.enemyType == kDwarf) {
// do small stuff
}
}

我目前正在开发一个项目,该项目有 10 种不同的敌人,每种都有 4 种行为选项。这一切都由一个类 (SKSpriteNode) 处理。

这一切都归结为您想要什么以及您如何安排代码来完成工作。我建议您仔细考虑您正在尝试做什么,如果遇到困难,请就更具体的问题寻求帮助。

关于ios - 复杂的敌人行为和模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28221379/

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