Как добавить CCSprite (текстуру) в многоугольник? - PullRequest
1 голос
/ 15 февраля 2011

Я добавляю многоугольники Box2D в свой мир и не могу понять, как добавить текстуру только к форме многоугольника.Многоугольник - это треугольник, и использование CGRectMake () для параметра rect: при инициализации моего спрайта дает мне спрайт больше, чем мой многоугольник.

Это мой метод, который добавляет полигон (пружину) в пределах сцены

-(void) addSpring:(zSpring*)spring
{
    [self addChild:spring.sprite];

    CGPoint p = spring.coords;
    //static triangle one
    b2Vec2 vertices[3];
    int32 count = 3;

    vertices[0].Set(0.0f,0.0f);
    vertices[1].Set(2.0f,0.0f);
    vertices[2].Set(0.0f,1.0f);

    b2BodyDef springBodyDef;
    springBodyDef.type = b2_staticBody;
    springBodyDef.position.Set(p.x/PTM_RATIO ,p.y/PTM_RATIO);
    springBodyDef.userData = spring.sprite;
    b2Body *body = world->CreateBody(&springBodyDef);

    b2PolygonShape polygon;
    polygon.Set(vertices, count);

    b2FixtureDef springShapeDef;
    springShapeDef.shape = &polygon;
    springShapeDef.density = 1.0f;
    springShapeDef.friction = 0.2f;
    springShapeDef.restitution = 1.6f;
    body->CreateFixture(&springShapeDef);   
}

, и это метод в классе, где я инициирую пружину и спрайт пружин.1006 *

-(id)initWithCoords:(CGPoint)p withSpringType:(int)st
{
    self.springType = st;
    self.coords = p;

    CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"metalTexture.png"];

    // When initializing the sprite I want to make a polygon (triangle), not a rectangle
    self.sprite = [[CCSprite alloc] initWithTexture:texture rect:CGRectMake(0, 0, 32, 32)];

    self.sprite.position = ccp(p.x, p.y);
    self.sprite.tag = 2;

    return self;
}

Как инициализировать спрайт с текстурой для многоугольника?И сделать только форму многоугольника имеющей текстуру?Спасибо!

1 Ответ

0 голосов
/ 31 марта 2011

Не совсем уверен, но я думаю, что вы можете быть немного смущены использованием текстур в Cocos2D и пространством коллизий в Box2D.Вы не можете применить текстуру для спрайта к точному экстенту многоугольника столкновения, если не начнете понимать некоторые особенности координат текстуры, но я не думаю, что это будет желаемый результат.Обычно, что делается ...

  • Создайте спрайт с текстурой
  • Создайте столкновение поли, которое следует за движением спрайта и обновляется по мере обновления позиции спрайта

Надеюсь, я многого не принимаю в том, чего вы здесь не знаете.Дайте мне знать, если это поможет или у вас есть другие вопросы.

...