我正在使用带有objective-c的cocos2d编写一个简单的游戏。在这个游戏中,我给敌人的精灵随机定位。为了避免不同敌人的重叠,我写了一张支票,以确保新的精灵CGRect及其随机位置不与任何其他精灵重叠。的CGRect。
我的问题是如何在初始化新精灵之前获得CGRect的大小?如果使用ccbi文件(cocosbuilder)初始化精灵,你如何做到这一点?
我之前做的是在初始化新精灵之前,我用png文件初始化一个临时精灵,它显示了敌人的第一帧(每个帧都有相同的大小)。然后使用它的大小如下:tempSprite.boundingBox。虽然它运行良好,但我认为在初始化每个新的敌人精灵之前制作一个tempSprite效率不高。
现在我正在尝试使用cocosbuilder转换我的游戏(因为使用ccbi文件可以更轻松地调整动画)。在初始化之前如何知道sprite的大小?我想我仍然可以使用[CCBReader nodeGraphFromFile:@" enemySprite.ccbi"]并使用tempSprite.boundingBox来获取它的大小。但这是正确的方法吗?它会对CPU和内存资源造成极大的浪费。更新:我尝试了我的方式,但没有成功。因为boundingBox大小值是(0,0)(位置值是对的)。
答案 0 :(得分:0)
我自己找到了解决方案。问题是由于我误解了ccbi文件创建的实例的结构。它是一个带有CCSprite的CCNode,因为它是变量,而不仅仅是一个CCSprite。 CCNode的大小为(0,0)(它作为CCSprite的容器),CCSprite具有正确的大小和正确的位置。
我在CocosBuilder中为CCSprite分配了一个CCSprite *变量。并使用CCSprite.boundingBox检查冲突。这解决了所有问题。