我正在使用带有objective-c 的cocos2d 编写一个简单的游戏。在这个游戏中,我给敌方精灵随机的位置。为了避免不同敌人的重叠,我写了一个检查以确保新精灵的随机位置的 CGRect 不与任何其他精灵的 CGRect 重叠。
我的问题是如何在初始化新精灵之前获得 CGRect 的大小?如果你使用 ccbi 文件(cocosbuilder)来初始化精灵,你会怎么做呢?
我之前做的是在初始化新的精灵之前,用png文件初始化一个临时的精灵,里面显示了敌人的第一帧(每一帧大小都一样)。然后像这样使用它的大小:tempSprite.boundingBox。虽然效果很好,但我认为在初始化每个新的敌人精灵之前制作 tempSprite 效率不高。
现在我正在尝试使用 cocosbuilder 转换我的游戏(因为使用 ccbi 文件可以更轻松地调整动画)。在初始化之前如何知道精灵的大小?我想我仍然可以使用 [CCBReader nodeGraphFromFile:@"enemySprite.ccbi"] 制作一个 tempSprite,并使用 tempSprite.boundingBox 来获取它的大小。但这是正确的方法吗?感觉对 CPU 和内存资源非常浪费。更新:我尝试了我的方法,但它不起作用。因为boundingBox大小值是(0,0)(位置值是对的)。