1.物理系统PhysicsWorld,RayCast
1 3.0物理系统PhysicsWorld
|
T07PhysicsWorld.h |
|
#ifndef #define #include class { public: CREATE_FUNC(T07PhysicsWorld); bool Scene* }; #endif |
|
T07PhysicsWorld.cpp |
|
#include bool { Layer::init(); PhysicsBody* PhysicsBody* { //后面的三个参数值分别表示的是:密度,弹性值,摩擦力 PhysicsBody* bodyA = //创建精灵 Sprite* //设置 sprite->setPhysicsBody(body); addChild(sprite); //设置精灵的位置 sprite->setPosition(winSize.width //设置速度 body->setVelocity(Vect(100, } { PhysicsBody* bodyB = Sprite* addChild(sprite); sprite->setPhysicsBody(body); sprite->setPosition(winSize.width } { bodyA->setContactTestBitmask(0x1); bodyB->setContactTestBitmask(0x1); bodyA->setGroup(1); bodyB->setGroup(2); //设置精灵的 auto ev->onContactBegin CCLog("Began return }; _eventDispatcher->addEventListenerWithSceneGraphPriority(ev, } { auto bodyB->getShapes().at(0)); ev->onContactBegin CCLog("Shape return }; _eventDispatcher->addEventListenerWithSceneGraphPriority(ev, } { auto ev->onContactBegin CCLog("Group return }; _eventDispatcher->addEventListenerWithSceneGraphPriority(ev, } return } |
|
TMenu.h |
|
#ifndef #define #include class { public: CREATE_FUNC(TMenu); bool bool }; #endif |
|
TMenu.cpp |
|
#include #include #include #include #include #include #include #include #include static "T01CPP11", "T02Vector", "T04Label", "T05Touch", "T06Box2D", "T07PhysicsWorld" }; bool { Layer::init(); Menu* addChild(menu); for (int { MenuItemFont* MenuItem* int Layer* if (title[i] if (title[i] if (title[i] if (title[i] if (title[i] if (title[i] if (l) { TBack* Scene* PhysicsWorld* world->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); s->addChild(b); s->addChild(l); Director::getInstance()->pushScene(s); } }); menu->addChild(item); item->setTag(1000 } menu->alignItemsVertically(); // auto #if 0 ev->onTouchBegan return }; #endif //ev->onTouchBegan = std::bind(&TMenu::TouchBegan, this, std::placeholders::_1, std::placeholders::_2); ev->onTouchBegan ev->onTouchMoved setPositionY(getPositionY() }; _eventDispatcher->addEventListenerWithSceneGraphPriority(ev, return } bool { return } |
|
运行结果: |
射线的做法
|
T08RayCast.h |
||||||||||||||
|
#ifndef #define #include class { public: CREATE_FUNC(T08RayCast); bool void void Sprite* int int float PhysicsShape* DrawNode* }; #endif |
||||||||||||||
|
T08RayCast.cpp |
||||||||||||||
|
#include void { Layer::onEnter(); Scene* scene->getPhysicsWorld()->setGravity(Vec2(0, } bool { Layer::init(); // { Sprite* addChild(cat); cat->setPosition(winSize.width _cat = } // { auto ev->onTouchBegan //得到触摸点 Vec2 //创建一个圆形的PhysicsBody PhysicsBody* Sprite* sprite->setPhysicsBody(body); addChild(sprite); sprite->setPosition(pt); return }; _eventDispatcher->addEventListenerWithSceneGraphPriority(ev, } { _angle = 0; _distance = 100; _nearDis = _food = _drawNode = } scheduleUpdate(); return } void { Scene* PhysicsWorld* //获得猫的位置 Vec2 Vec2 //当前时刻扫描到的终点位置 end.x end.y // if (_drawNode) //下面的代码用于画线段 _drawNode = _drawNode->drawSegment(start, addChild(_drawNode); // //bool(PhysicsWorld& world, const PhysicsRayCastInfo& info, void* data) auto if (info.shape return //如果点包含猫的点 float if (dis { _nearDis = _food = } // return }; //通过rayCast画一条射线 world->rayCast(callback, //每次角度加2 _angle += 2; //如果角度为360 if (_angle { //如果存在食物 if (_food) { // Node* //将猫的的位置数值到新的位置 _cat->setPosition(node->getPosition()); node->removeFromParent(); _food = _nearDis = } _angle = 0; } } |
||||||||||||||
|
运行结果: 1 3.0物理系统PhysicsWorld
射线的做法
|
1.物理系统PhysicsWorld,RayCast的更多相关文章
- Atitit 游戏引擎---物理系统(1)------爆炸效果
Atitit 游戏引擎---物理系统(1)------爆炸效果 1.1. 动画框架的来源flex,jqueryuijs,anim , cocos2d 1 1.2. Jqueryui的特效库 1 1.3 ...
- 物理系统迁移虚拟化P2V技术
企业搭建虚拟化平台之后的第一件事肯定是将现有的服务器应用业务转移到虚拟服务器上,这就是虚拟化整合服务器的第一步,也是虚拟化程序的基础功能之一:P2V的转化功能. AD: 企业搭建虚拟化平台之后的第 ...
- nVidia的物理系统
PhysX PhysX(wiki en 中文,physx wiki physx wiki2)是nVidia公司一款跨平台实时物理引擎,可使用硬件(GPU.PPU: Physics Process ...
- Physics(物理系统)
物理: Physics Box2d Unity 内置NVDIA PhysX物理引擎 刚体:要使一个物体在物理控制下,简单添加一个刚体给它.这时,物体将受重力影响,并可以与其他 ...
- Unity物理系统的触发器
如何触发触发器函数? 触发器中相互的,当其中一个是触发器,两个物体进入碰撞,双方的触发器函数都会触发. 两个碰撞盒穿入? 解决办法:给其中一个添加刚体 触发器的物理配置 以上是个人理解,看过API之后 ...
- Unity3D学习笔记(四):物理系统碰撞和预制体
Rigidbody(刚体组件):加了此组件游戏物体就变成刚体了 ----Mass(质量,单位kg):重力G = 质量m * 重力加速度g(g=9.81 m/s^2) --------冲量守恒定理 动量 ...
- 【腾讯GAD暑期训练营游戏程序班】游戏中的物理系统作业说明文档
一.需求分析• 添加一辆新NPC车,可以让其与主角车碰撞:• 添加一些新物件,能够与车互动,在其触发事件将其移除:• 添加一些无法撞动的事件:• 添加NPC车的自动移动逻辑:• 在课上赛车的示例上添加 ...
- Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界
物理模拟是一个奇妙的事情,以此著名的游戏有愤怒的小鸟.我们在这节将会一起来了解如何设置重力,设置物理包围体,碰撞的检测. 要点: 设置物理检测的代理: 让主场景遵循SKPhysicsContactDe ...
- Unity Animation System(动画系统)
动画系统: 支持:动画融合,混合,叠加动画,行走循环的时间同步,动画层,控制动画的各个方面(时间,速度,融合权重) 带有每顶点1.2或4骨骼的蒙皮网格,以及支持基于物理的布娃娃系统和程序动画. ...
随机推荐
- cogs 619. [金陵中学2007] 传话
提交地址:http://cojs.tk/cogs/problem/problem.php?pid=619 619. [金陵中学2007] 传话 ★☆ 输入文件:messagez.in 输出文件 ...
- [USACO 08JAN]Haybale Guessing
Description The cows, who always have an inferiority complex about their intelligence, have a new gu ...
- [AHOI2005]约数研究
题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用“Samu ...
- [Baltic2004]sequence
题目描述: 给定一个序列t1,t2,...,tn ,求一个递增序列z1<z2<...<zn , 使得R=|t1−z1|+|t2−z2|+...+|tn−zn| 的值最小.本题中,我们 ...
- ●POJ 1509 Glass Beads
题链: http://poj.org/problem?id=1509 题解: 给出一个字符串,有一个操作:把首字符放到末尾,形成新的串.求任意次操作后,字典序最小的串的首字母在原串中的位置.(这就是最 ...
- 【bzoj4568 scoi2016】幸运数字
题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征. 一些旅行者希望 ...
- bzoj 1875: [SDOI2009]HH去散步
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...
- bzoj2127
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 2492 Solved: 1205[Submit][Status][D ...
- 2017-9-19 c语言预备作业
题目一: (1)我对邹欣老师博客内容的看法 针对邹欣老师的第一种看法,也就是文中所谈的春蚕与园丁的例子.我认为在大学之前的阶段,师生关系可以如此比喻,因为在中学阶段教师与学生的关系,更多地是一个知识的 ...
- 使用RestTemplate访问restful服务时遇到的问题
可以通过通过wireshark抓包,使用Postman发送请求 wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必 ...