在cocos2d-x中实现多点触碰

在cocos2d-x中,对于触摸事件有两种模式:

大家都知道,第一种为

CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);//添加触摸委托,

也是cclayer默认的模式,可用于多点触摸;

第二种为

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetDelegate(this, 0);//添加触摸委托,

它将会把多点拆为单点进行传递


现在要说的是第一种,要实现多点触摸,

首先得设置几个关键的地方

1。setTouchEnabled(true);  //允许触摸

2。CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);//添加触摸委托,

3。也是比较隐蔽的,

在默认的ios目录下的AppController.mm文件里,

设置 [__glView setMultipleTouchEnabled:YES];   //设置多点触摸关键部位;

如果不设置此处,程序将依然知响应单点触摸。

现在就可以显示多点触摸了。

Cocos2d-x实现碰撞检测通常涉及以下步骤: 1. 为游戏对象添加物理形状:在Cocos2d-x,通常使用`ccPhysicsNode`或`ccPhysicsSprite`等类来给游戏对象添加物理形状,如矩形、圆形或自定义形状。 2. 设置物理世界:创建一个`cocos2d::PhysicsWorld`对象,配置物理世界的各种参数,如重力、速度等,并将此物理世界应用到游戏场景。 3. 添加物理体(PhysicsBody):给游戏对象创建物理体,并设置其物理属性,如质量、摩擦力、弹性等。然后将物理形状与物理体关联起来。 4. 更新物理世界:在游戏循环,通过调用物理世界的`step`方法来模拟物理世界物体的运动和相互作用。 5. 碰撞事件处理:在物理世界,可以设置回调函数或监听器来处理碰撞事件。通常会使用`ccPhysicsCollisionBegin`、`ccPhysicsCollisionStay`和`ccPhysicsCollisionEnd`等事件来响应不同的碰撞情况。 6. 处理碰撞逻辑:在事件处理函数,编写逻辑代码来处理碰撞发生时的行为,比如角色跳跃、物体爆炸等。 以下是一个简化的示例代码,展示如何在Cocos2d-x设置简单的碰撞检测: ```cpp // 创建一个PhysicsWorld auto physicsWorld = cocos2d::PhysicsWorld::create(); // 将PhysicsWorld应用到场景 this->setPhysicsWorld(physicsWorld); // 给游戏对象添加PhysicsBody和形状 auto sprite = cocos2d::Sprite::create("mySprite.png"); auto body = cocos2d::PhysicsBody::createCircle(50); // 创建一个半径为50的圆形物理形状 body->setDynamic(true); // 设置为动态体 body->setContactCallback(this, callfunc_selector(GameScene::onContactBegin)); // 设置碰撞回调 sprite->setPhysicsBody(body); // 将带有PhysicsBody的游戏对象添加到场景 this->addChild(sprite); // 碰撞回调函数 bool GameScene::onContactBegin(cocos2d::PhysicsContact& contact) { // 这里编写碰撞后的处理逻辑 return true; // 返回true表示碰撞事件已经被处理,不再传播 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值