cocos2d-x 鼠标或手指移动刚体
来源:互联网 发布:剑灵女捏脸数据图 编辑:程序博客网 时间:2024/04/28 16:34
QueryCallback.cpp
class QueryCallback : public b2QueryCallback{public:QueryCallback(const b2Vec2& point){m_point = point;m_fixture = NULL;} bool ReportFixture(b2Fixture* fixture){b2Body* body = fixture->GetBody();if (body->GetType() == b2_dynamicBody){bool inside = fixture->TestPoint(m_point);if (inside){m_fixture = fixture; // We are done, terminate the query.return false;}} // Continue the query.return true;} b2Vec2 m_point;b2Fixture* m_fixture;};
HelloWorld.h
virtual bool MouseDown(const b2Vec2& p); virtual void MouseUp(const b2Vec2& p); void MouseMove(const b2Vec2& p); // b2Vec2 m_mouseWorld; b2MouseJoint* m_mouseJoint; b2Body *m_groundBody;//空的b2body,为了给鼠标关节设置刚体A
HelloWorld.cpp
bool HelloWorld::MouseDown(const b2Vec2& p) { if (m_mouseJoint != NULL) { return false; } // Make a small box. b2AABB aabb; b2Vec2 d; d.Set(0.001f, 0.001f); aabb.lowerBound = p - d; aabb.upperBound = p + d; // Query the world for overlapping shapes. QueryCallback callback(p); world->QueryAABB(&callback, aabb); if (callback.m_fixture) { b2Body* body = callback.m_fixture->GetBody(); b2MouseJointDef md; md.bodyA = m_groundBody; md.bodyB = body; md.target = p; md.maxForce = 1000.0f * body->GetMass(); m_mouseJoint = (b2MouseJoint*)world->CreateJoint(&md); body->SetAwake(true); return true; } } void HelloWorld::MouseMove(const b2Vec2& p) { //m_mouseWorld = p; if (m_mouseJoint) { m_mouseJoint->SetTarget(p); } } void HelloWorld::MouseUp(const b2Vec2& p) { if (m_mouseJoint) { world->DestroyJoint(m_mouseJoint); m_mouseJoint = NULL; } } bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { isStart = pTouch->getLocation(); CCPoint nodePosition = convertToNodeSpace( isStart ); //PTM_RATIO = 32 return MouseDown(b2Vec2(nodePosition.x / PTM_RATIO, nodePosition.y / PTM_RATIO)); } void HelloWorld::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) { CCPoint start = pTouch->getLocation();//get the coordinate of the touch point in openGL CCPoint nodePosition = convertToNodeSpace( start ); this->MouseMove(b2Vec2(nodePosition.x / PTM_RATIO, nodePosition.y / PTM_RATIO)); } void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { CCPoint nodePosition = convertToNodeSpace( pTouch->getLocation() ); this->MouseUp(b2Vec2(nodePosition.x / PTM_RATIO,nodePosition.y / PTM_RATIO)); }
- cocos2d-x 鼠标或手指移动刚体
- cocos2d-x 鼠标或手指移动刚体
- Cocos2d-x Box2d中实现刚体的移动
- 鼠标、手指拖曳物体移动
- 鼠标移动绘制刚体(同发泰然)
- UGUI判断鼠标或手指(移动平台)是否点击在UGUI上
- 什么是cocos2d-x里所说的“刚体”
- cocos2d-x box2d 世界刚体初始化流程
- cocos2d-x window实现鼠标移动 键盘事件
- cocos2d-x 处理windows按键消息 鼠标移动消息
- Unity检测鼠标碰撞或手指触摸
- cocos2d(CCSprite绑定不规则刚体与精灵一起移动)
- Cocos2d-x--Box2D使用GLES-Render.h渲染查看刚体
- cocos2d-x3.x实现屏幕画线并添加刚体属性
- Cocos2d-x 强制设置运动刚体的位置
- cocos2d-x文字移动
- cocos2d-x移动淡出
- Cocos2d-x 精灵移动
- jbpm5.1介绍(6)
- Seek, and you will find.
- C#序列化,反序列化
- The Star Zoo——9、An animal is destroyed
- jbpm5.1介绍(7)
- cocos2d-x 鼠标或手指移动刚体
- 进程间通信之sigaction_01<读书笔记>
- 配置Qt的windows开发环境,并通过VS2010进行开发。
- matlab中实现文字和数字和混输出excel
- jbpm5.1介绍(8)
- MyEclipse常用插件使用教程
- 每天一个小程序之python实现统计英文单词出现个数
- Cortex-AX系列性能对比(原)
- jbpm5.1介绍(9)