【cocos2d-x游戏开发】使用关节

【cocos2d-x游戏开发】使用关节,第1张

概述在场景中我们可以使用关节来让两个刚体联系在一起。 首先创建一个物理世界 Scene* HelloWorld::createScene(){ // 'scene' is an autorelease object auto scene = Scene::createWithPhysics(); scene->get

在场景中我们可以使用关节来让两个刚体联系在一起。

首先创建一个物理世界
Scene* HelloWorld::createScene(){    // 'scene' is an autorelease object	auto scene = Scene::createWithPhysics();                                    	scene->getPhysicsWorld()->setDeBUGDrawMask(PhysicsWorld::DEBUGDRAW_ALL);        // 'layer' is an autorelease object    auto layer = HelloWorld::create();	layer->setPhyworld(scene->getPhysicsWorld());    // add layer as a child to scene    scene->addChild(layer);    // return the scene    return scene;}

然后在init函数里面设置世界
//定义世界的边界  	auto body = PhysicsBody::createEdgeBox(visibleSize,PHYSICSBODY_MATERIAL_DEFAulT,5.0f);                     	auto edgeNode = Node::create();                                         	edgeNode->setposition(Vec2(visibleSize.wIDth / 2,visibleSize.height / 2));               	edgeNode->setPhysicsBody(body);       //把世界的边界加到这个节点上                               	this->addChild(edgeNode);                    //把世界节点加到场景中                        	settouchEnabled(true);     	//设置为单点触摸  	settouchMode(touch::dispatchMode::ONE_BY_ONE);

然后响应鼠标点击函数
bool HelloWorld::ontouchBegan(touch* touch,Event* event)//单点触摸{	Vec2 location = touch->getLocation();//获取触摸点坐标	addNewSpriteAtposition(location);	return false;}

然后在点击位置添加精灵


voID HelloWorld::addNewSpriteAtposition(Vec2 p){      	Size visibleSize = Director::getInstance()->getVisibleSize();//获取屏幕尺寸	Vec2 origin = Director::getInstance()->getVisibleOrigin();//获取窗口原点坐标	auto BoxA = Sprite::create("1.png");//创建精灵	BoxA->setposition(origin + p);	auto BoxABody = PhysicsBody::createBox(BoxA->getContentSize());//创建body	BoxA->setPhysicsBody(BoxABody);//把body绑定到制定精灵上	addChild(BoxA,10,100);//把带有身体的精灵添加到场景中	/*addChild函数的参数有三个:	第一个就是精灵的指针	第二个就是绘制层的顺序,默认参数值为0,表示最高优先层导入,该值越大表示该层在最后加载(在最高一层)	第三个参数为Tag标记,如果以后在该类的其他方法中要访问这个变量时可以通过调用函数getChildByTag来取回该对象,	然后可以对该对象进行 *** 作,这样做的好处是降低系统资源的占用*/	auto BoxB = Sprite::create("2.png");	BoxB->setposition(origin + p + Vec2(0,-120));	auto BoxBBody = PhysicsBody::createBox(BoxB->getContentSize());	BoxB->setPhysicsBody(BoxBBody);	addChild(BoxB,20,101);	//BoxABody->setContactTestBitmask(0xFFFFFFFF);	//BoxBBody->setContactTestBitmask(0xFFFFFFFF);	auto world = this->getScene()->getPhysicsWorld();//从场景中获得物理世界的对象	PhysicsJointdistance* joint = PhysicsJointdistance::construct(BoxABody,BoxBBody,Vec2(0,0),BoxB->getContentSize().wIDth / 2));	//创建一个距离节点	world->addJoint(joint); //把节点加入到场景中}

下面是效果图


总结

以上是内存溢出为你收集整理的【cocos2d-x游戏开发】使用关节全部内容,希望文章能够帮你解决【cocos2d-x游戏开发】使用关节所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1008090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存