最近,我用cocos2dPython做了一个游戏。但我在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中有两种实现方式:CollisionManagerBruteForceCollisionManagerGrid。例如,您可以使用:

self.collision_manager = CollisionManagerBruteForce()

但请注意CollisionManagerGridis more efficient

关于python - 如何使用cocos2d的collision_model,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30759065/

10-10 19:47