3

最近はcocos2dwithPythonを使ってゲームを作っています。しかし、私は問題がありましたcollision_modelドキュメントを読みましたが、CollisionManagerのように を使用して追加することはまだできません。CollidableSprite

実際、エラーを回避するためActorSpriteに toを変更する必要がありました。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)

ドキュメントには、衝突可能なスプライトを初期化するこの例が示されています。しかし、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()

それで、ドキュメントに何か問題がありますか?それとも、私はそれをどこか誤解していますか?

4

1 に答える 1

2

この例では実際に のCollidableSprite代わりに を初期化する必要があるようActorSpriteです。

CollisionManagerクラスは単なるインターフェースです。それは何もしません。collision_modelには と の 2 つの実装がCollisionManagerBruteForceありますCollisionManagerGrid。したがって、たとえば次のように使用できます。

self.collision_manager = CollisionManagerBruteForce()

ただし、CollisionManagerGrid より効率的であることに注意してください。

于 2015-06-12T08:55:28.123 に答える