最近,我用cocos2d
和Python
做了一个游戏。但我在collision_model
上遇到了麻烦。我读了documentation但是我仍然不能像在example中那样使用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
。 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()
那么,文件有什么问题吗?或者是我误会了?
最佳答案
看起来这个例子应该初始化一个CollidableSprite
而不是一个ActorSprite
。CollisionManager
类只是一个接口。它什么也做不了。在collision_model中有两种实现方式:CollisionManagerBruteForce
和CollisionManagerGrid
。例如,您可以使用:
self.collision_manager = CollisionManagerBruteForce()
但请注意
CollisionManagerGrid
is more efficient。关于python - 如何使用cocos2d的collision_model,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30759065/