【问题标题】:How can i do Physics Joint of bodies in cocos2d-x 3.3?如何在 cocos2d-x 3.3 中进行实体的物理连接?
【发布时间】:2014-12-12 09:57:56
【问题描述】:

如何在 cocos2d-x 3.3 中将这两个(汽车和车轮)结合为一个物理体? 如何将此关节体添加到物理世界中?

Sprite *car=Sprite::create("abc.png");
car->setPosition(100,400);
car->setScale(1.5, 1.5);
this->addChild(car);
PhysicsBody *car_body=PhysicsBody::create();
car->setPhysicsBody(car_body);
car_body->setGravityEnable(false);

Sprite *wheel=Sprite::create("abc.png");
wheel->setPosition(40,350);
this->addChild(wheel);

PhysicsBody *wheel_bd=PhysicsBody::create(); 
wheel_bd=PhysicsBody::createCircle(69.0/64.0);
wheel->setPhysicsBody(wheel_bd);
wheel_bd->setGravityEnable(false);
PhysicsJoint *co =PhysicsJointGroove::construct(wheel->getPhysicsBody(),
car->getPhysicsBody(),Vec2(80,250),Vec2(160,250),Vec2(1.0,1.0));
scene->getPhysicsWorld()->addJoint(co); //this line creating error into my code.

【问题讨论】:

  • 因为世界是空的,你必须通过场景将世界传递到这一层
  • 谢谢兄弟...我是 PhysicsPrograming 的新手。如何将世界传递到层?上面的身体联合正确吗?

标签: cocos2d-x box2d cocos2d-x-3.0 chipmunk


【解决方案1】:

我怀疑这个错误是由于你的 car_body 没有任何形状,尝试为你的 car_body 添加一个形状,做这样的事情 编辑:-

        Sprite *car=Sprite::create("abc.png");
        car->setPosition(100,400);
        car->setScale(1.5, 1.5);

        PhysicsBody *car_Body = PhysicsBody::create();
        car_Body->addShape(PhysicsShapeBox::create(car->getBoundingBox().size);
        car_Body->setGravityEnable(false);
        car->setPhysicsBody(car_body);
        this->addChild(car);

在上面的代码中,您的汽车物理车身将有一个您的 Sprite 的边界框 你也有点浪费在这里:-

         PhysicsBody *wheel_bd = PhysicsBody::create(); 
         wheel_bd=PhysicsBody::createCircle(69.0/64.0);

你应该这样做:-

         PhysicsBody *wheel_bd = PhysicsBody::create();
         wheel_bd ->addShape(PhysicsShapeCircle::create(69.0/64.0));

【讨论】:

  • 是的..你就在那儿...但是我有问题我如何将图像分配给车轮和汽车??
  • 与您在上面的代码中所做的相同,它会起作用,我给您的是使用集成物理创建物理体的正确方法,您的其余代码对我来说看起来不错
  • ok...如何在 cocos2d-x v3.3rc0 中连接这三个物理体(wheel1、wheel2 和 Car_body)?
  • 我会通过扩展 CCSprite 来创建自定义汽车类,并在该类中添加三个车身及其各自的 Sprite(Car_body、Car_hood、car_cabinet),并相应地定位它们,这将给我一个漂亮的汽车形状,我也可以通过添加更多组件来修改我的汽车,我还将运行一个更新方法,它将用汽车主体更新所有汽车儿童(引擎盖、橱柜等)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多