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爬取数据进行数据库存储和本地存储
今天记录下scrapy将数据存储到本地和数据库中,不是不会写,因为小编每次都写觉得都一样,所以记录下,以后直接用就可以了-^o^- 1.本地存储 设置pipel ines.py class Ak17P ...
- [UOJ 282]长度测量鸡
Description
- [Codeforces 864C]Bus
Description A bus moves along the coordinate line Ox from the point x = 0 to the point x = a. After ...
- [HNOI2012]集合选数
题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x 不能在该子集中. 同学们不喜 ...
- LOJ #6119. 「2017 山东二轮集训 Day7」国王
Description 在某个神奇的大陆上,有一个国家,这片大陆的所有城市间的道路网可以看做是一棵树,每个城市要么是工业城市,要么是农业城市,这个国家的人认为一条路径是 exciting 的,当且仅当 ...
- ●POJ 2794 Double Patience
题链: http://poj.org/problem?id=2794题解: 状压DP,概率 9元组表示每一堆还剩几张牌.可以用5进制状压,共5^9=1953124个状态. 令P(S)表示S这个状态被取 ...
- ●BZOJ 4408 [Fjoi 2016]神秘数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...
- 例10-3 uva10375(唯一分解定理)
题意:已知C(m,n) = m!/(n!(m-n)!),已知p,q,r,s,求C(p,q)/C(r,s) 思路: 全部分解成质因子,相乘则加,除则减 #include <iostream> ...
- [bzoj4868][Shoi2017]期末考试
来自FallDream 的博客,未经允许,请勿转载,谢谢. 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在 ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统【转】
转自:http://www.cnblogs.com/riskyer/p/3366001.html qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和l ...