我想在 Sprite 套件游戏中实现经典的“爆头”效果。
我的想法和尝试:
在同一个 Sprite 上创建单独的“ body ”和“头部”物理物体,并用关节固定它们。不可能的:(
在“敌人” Sprite 上创建一个“ body ”物理体,并创建另一个透明 Sprite ,其“头部”物理体跟随 body (位于顶部)。这种方法要求我跟踪哪个头部与哪个 body 相关联。这也会降低游戏效率。我很好奇是否可以创建 SKSpriteNode 的子类并创建一个将这两个 spritenode 和物理物体捆绑在一起的“敌人”。
检查射弹相对于敌人的位置,看看射弹是否在 Sprite 顶部的特定 Y 范围内发生接触。我相信这会效率低下,因为射弹飞行得非常快。
如果有人创造了这种效果并可以分享他们的知识,我将不胜感激。谢谢!
最佳答案
我在很多地方使用这个设置。如果您发现自己想要添加更多零件或武器,它可以很好地扩展,并且它可以让您在视觉上轻松隐藏任何这些零件或武器。如果你有很多事情发生并且不同的敌人有不同的“东西”,或者你正在做一些疯狂的事情,比如根据游戏玩法将子 Sprite 养育给不同的实体等,那么 userData 的使用会派上用场。
-(SKSpriteNode*)makeAnEnemy
{
SKSpriteNode *mainEnemy;
SKSpriteNode *enemyHead;
//setup mainEnemy physics body
//setup enemyHead physics body
[mainEnemy addChild:enemyHead];
// depending on your plans, on hit you could use the following code later:
SKSpriteNode *theEnemyThatWasHit = (SKSpriteNode*)enemyHead.parent;
//or you can use userdata and set it all up here
[mainEnemy.userData setObject:enemyHead forKey:@"myHead"];
[enemyHead.userData setObject:mainEnemy forKey:@"myBody"];
return mainEnemy;
}
关于sprite-kit - 如何检测物理体不同区域的接触,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637025/