저는 중력을 가지고있는 box2d와 함께 cocos2d에있는 세계를 가지고 있습니다. 이제는 각 스프라이트에 본문을 추가하기 위해 함수를 호출하고 스프라이트를 보냅니다.세계에서 오직 하나의 스프라이트에 0의 중력을 적용합니다.
sprite1은 중력에 따라 움직여야하지만 sprite1이 충돌하기 전까지는 중력이없는 상태에서 정적이어야합니다. 그러면 세계 세력이 영향을 미치게됩니다.
다른 스프라이트가 그를 때릴 때까지 어떻게 sprite1/body gravity를 0으로 설정합니까?
내 문제는 몸에 동일한 기능을 사용하여 모든 스프라이트 :
- (void)addBoxBodyForSprite:(CCSprite *)sprite {
b2BodyDef spriteBodyDef;
spriteBodyDef.type = b2_dynamicBody;
spriteBodyDef.position.Set(sprite.position.x/PTM_RATIO,sprite.position.y/PTM_RATIO);
spriteBodyDef.userData = sprite;
spriteBody = world->CreateBody(&spriteBodyDef);
b2PolygonShape spriteShape;
spriteShape.SetAsBox(sprite.contentSize.width/PTM_RATIO/2,sprite.contentSize.height/PTM_RATIO/2);
b2FixtureDef spriteShapeDef;
spriteShapeDef.shape = &spriteShape;
spriteShapeDef.density = 10.0;
spriteShapeDef.isSensor = true;
spriteBody->CreateFixture(&spriteShapeDef);
}
난 단지 sprite1의 시작 부분에 중력을 적용 할, 그러나 나는 또한 sprite2의 몸을 만들려는 않습니다, 때문에 나중에 그것은 세계에 의해 영향을받을 것이다.
시작시 두 개의 바디를 만든 후 sprite2 만 떨어지는 것을 어떻게 막을 수 있습니까?
감사합니다.
잘 작동하지만 잠자기 때 다른 스프라이트가 충돌하면 연락처 수신기에서 감지 할 수 있나요 ??? – Curnelious
수면 시체는 물리적 세계 설정에 영향을받지 않지만 접촉이 감지되면이를 깨 웁니다. 나는 완전히 확신 할 수는 없지만 귀하의 연락처를 통해 가면 한 번 시신을 깨우고 다음 수표에서 두 사람 모두 연락 할 것이라고 기대합니다. –
본문을 비활성으로 설정하면 연락처로 깨우지 않습니다. –