首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用cocos2d的collision_model

如何使用cocos2d的collision_model
EN

Stack Overflow用户
提问于 2015-06-10 14:18:01
回答 1查看 702关注 0票数 3

最近,我用cocos2dPython一起制作了一个游戏。但我在collision_model上遇到了麻烦。我阅读了文档,但仍然不能像在示例中那样使用CollisionManager来添加CollidableSprite

实际上,为了避免错误,我不得不将ActorSprite更改为CollidableSprite。问题是什么?

代码语言:javascript
复制
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()

代码语言:javascript
复制
 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()

那么,文档有什么问题吗?还是我误解了它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-12 08:55:28

看起来,这个示例实际上应该初始化一个CollidableSprite而不是一个ActorSprite

CollisionManager类只是一个接口。它什么也做不了。模型中有两个实现:CollisionManagerBruteForceCollisionManagerGrid。因此,您可以使用例如:

代码语言:javascript
复制
self.collision_manager = CollisionManagerBruteForce()

但是请注意CollisionManagerGrid 更有效率

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30759065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档