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骨骼的蒙皮网格,以及支持基于物理的布娃娃系统和程序动画. ...
随机推荐
- scrapy下载图片到自己的目录,创建缩略图,存储入库
环境和工具:python2.7,scrapy 实验网站:http://www.27270.com/tag/333.html 爬去所有兔女郎图片,下面的推荐需要过滤 逻辑:分析网站信息,下载图片和入库 ...
- Struts支持的contentType
'ez' => 'application/andrew-inset', 'hqx' => 'application/mac-binhex40', 'cpt' => 'applicat ...
- [Codeforces 946F]Fibonacci String Subsequences
Description 题库链接 定义 \(F(x)\) 为 \(F(x-1)\) 与 \(F(x-2)\) 的连接(其中 \(F(0) = "0",F(1) = "1& ...
- [NOI 2007]社交网络
Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这个 ...
- Codefroces 850C Arpa and a game with Mojtaba
Description两个人Van♂游戏.给出$n$个正整数$ai$两人轮流操作,每次选出一个素数$p$和一个幂数$k$,选择的前提为该$n$个数中有$p^{k}$的倍数.接着将所有的$p^{k}$的 ...
- bzoj 2004: [Hnoi2010]Bus 公交线路
Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...
- [BZOJ]1085 骑士精神(SCOI2005)
这种鲜明的玄学风格很明显就是十几年前的题目. Description 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位.在任何时候一个骑士都能按照骑士的走法(它可以走到和它横坐 ...
- linux心得
cd .. 返回上一级文件夹cd /xxx/xxxx/xx 进入文件夹cd Desktop 进入桌面sudo vim /etc/vim/vimrc 进入vim配置器:w xxx 保存为名为xxx的文件 ...
- bzoj2434阿狸的自动机
转载自 http://www.cnblogs.com/zj75211/p/6934976.html ●BZOJ 2434: [Noi2011]阿狸的打字机 ●赘述题目 (题意就不赘述了) ●解法: ...
- diango-团队介绍
1.使用django-admin startproject show创建项目,并使用python manage.py startapp team_show创建应用 2.进行相关的配置 3.代码的实现