最近,我用cocos2d和Python一起制作了一个游戏。但我在collision_model上遇到了麻烦。我阅读了文档,但仍然不能像在示例中那样使用CollisionManager来添加CollidableSprite。
实际上,为了避免错误,我不得不将ActorSprite更改为CollidableSprite。问题是什么?
import cocos.euclid as eu
import cocos.collision_model as cm
class CollidableSprite(cocos.sprite.Sprite):
def __init__(self, image, center_x, center_y, radius):
super(ActorSprite, self).__init__(image)
self.position = (center_x, center_y)
self.cshape = cm.CircleShape(eu.Vector2(center_x, center_y), radius)
class ActorModel(object):
def __init__(self, cx, cy, radius):
self.cshape = cm.CircleShape(eu.Vector2(center_x, center_y), radius)文档显示了初始化可碰撞的sprite的示例。但ActorSprite从何而来呢?我必须将它更改为CollidableSprite,以使类正常工作。我声明了一个碰撞管理器来添加精灵。但当我调用函数None时,它会返回CollisionManeger.known_objs()。
def __init__(self):
super(page,self).__init__()
self.collision_manager = CollisionManager()
self.collision_manager.add(self.sprite1)
self.collision_manager.add(self.sprite2)
print self.collision_manager.known_objs()那么,文档有什么问题吗?还是我误解了它?
发布于 2015-06-12 08:55:28
看起来,这个示例实际上应该初始化一个CollidableSprite而不是一个ActorSprite。
CollisionManager类只是一个接口。它什么也做不了。模型中有两个实现:CollisionManagerBruteForce和CollisionManagerGrid。因此,您可以使用例如:
self.collision_manager = CollisionManagerBruteForce()但是请注意CollisionManagerGrid 更有效率。
https://stackoverflow.com/questions/30759065
复制相似问题