Joint关节

来源:互联网 发布:西安网络推广外包 编辑:程序博客网 时间:2024/06/09 18:11

把两个body连接在一起的东西。

如果一个是静态的,一个是动态的,就悬在上面晃悠:


#include "T09Joint.h"void T09Joint::onEnter(){Layer::onEnter();PhysicsBody* bodyA;PhysicsBody* bodyB;{PhysicsBody* body = PhysicsBody::createCircle(20);bodyA = body;Sprite* sprite = Sprite::create();_A = sprite;sprite->setContentSize(Size(40, 40));sprite->setPhysicsBody(body);sprite->setPosition(winSize.width / 2 - 50, winSize.height / 2+100);addChild(sprite);}{//PhysicsBody* body = PhysicsBody::createEdgeBox(Size(40, 40));PhysicsBody* body = PhysicsBody::createBox(Size(40, 40));bodyB = body;Sprite* sprite = Sprite::create();sprite->setContentSize(Size(40, 40));_B = sprite;sprite->setPhysicsBody(body);sprite->setPosition(winSize.width / 2 + 50, winSize.height / 2+100);addChild(sprite);}{PhysicsBody* body = PhysicsBody::createEdgeBox(winSize, PhysicsMaterial(1.0f, 1.0f, 0.0f));Sprite* sprite = Sprite::create();addChild(sprite);sprite->setPhysicsBody(body);sprite->setPosition(winSize.width / 2, winSize.height / 2);}  // PhysicsJointDistance特点:两个body之间的距离是固定的。 第三个参数是描点,即连接点。//PhysicsJoint* joint = PhysicsJointDistance::construct(bodyA, bodyB, Vec2(0, 0), Vec2(0, 0));// PhysicsJointSpring特点:弹性  第五个参数500.弹簧的硬度。//PhysicsJoint* joint = PhysicsJointSpring::construct(bodyA, bodyB, Vec2(0, 0), Vec2(0, 0), 500.0f, 500.0f);// PhysicsJointPin 特点:别针 一个点上连接两个body,扯它一下跟着跑//PhysicsJoint* joint = PhysicsJointPin::construct(bodyA, bodyB, Vec2(winSize.width / 2, winSize.height / 2)); // PhysicsJointMotor 特点:就像齿轮一样,一个转另一个跟着转。PhysicsJoint* joint = PhysicsJointMotor::construct(bodyA, bodyB, 1.0);{auto ev = EventListenerTouchOneByOne::create();ev->onTouchBegan = [&](Touch* touch, Event*){Point pt = touch->getLocation();if (_A->getBoundingBox().containsPoint(pt)){_C = _A;return true;}if (_B->getBoundingBox().containsPoint(pt)){_C = _B;return true;}return false; };ev->onTouchEnded = [&](Touch* pTouch, Event*){Vec2 pt = pTouch->getLocation() - pTouch->getStartLocation();_C->getPhysicsBody()->setVelocity(Vec2(pt));};_eventDispatcher->addEventListenerWithSceneGraphPriority(ev, this);}getPhysicsWorld()->addJoint(joint);}


0 0
原创粉丝点击