Cocos2d-x3.3 Physics物理引擎模块解决了刚体穿透问题

看代码:

void PhysicsFixedUpdate::onEnter()

{

PhysicsDemo::onEnter();

_scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL);

_scene->getPhysicsWorld()->setGravity(Point::ZERO);

// wall

auto wall = Node::create();

wall->setPhysicsBody(PhysicsBody::createEdgeBox(VisibleRect::getVisibleRect().size,
PhysicsMaterial(0.1f,
1, 0.0f)));

wall->setPosition(VisibleRect::center());

this->addChild(wall);

addBall();

scheduleOnce(schedule_selector(PhysicsFixedUpdate::updateStart),
2);

}

void PhysicsFixedUpdate::addBall()

{

auto ball = Sprite::create("Images/ball.png");

ball->setPosition(100,
100);

ball->setPhysicsBody(PhysicsBody::createCircle(ball->getContentSize().width/2,
PhysicsMaterial(0.1f,
1, 0.0f)));

ball->getPhysicsBody()->setTag(DRAG_BODYS_TAG);

ball->getPhysicsBody()->setVelocity(Point(1000,
20));

this->addChild(ball);

}

void PhysicsFixedUpdate::updateStart(float delta)

{

addBall();

//重点在这里

_scene->getPhysicsWorld()->setAutoStep(false);

scheduleUpdate();

}

void PhysicsFixedUpdate::update(float delta)

{

// use fixed time and calculate 3 times per frame makes physics simulate more precisely.

   //这里表示先走3步瞧瞧  如果fps是1/60  三个setp就是1/180

    for (int i =
0; i < 3; ++i)

    {

       
_scene->getPhysicsWorld()->step(1/180.0f);

    }

}

时间: 2024-11-07 17:06:34

Cocos2d-x3.3 Physics物理引擎模块解决了刚体穿透问题的相关文章

SPRITEKIT游戏框架之关于PHYSICS物理引擎属性

Spritekit提供了一个默认的物理模拟系统,用来模拟真实物理世界,可以使得编程者将注意力从力学碰撞和重力模拟的计算中解放出来,通过简单地代码来实现物理碰撞的模拟,而将注意力集中在更需要花费精力的地方.现在,让我们来学习这个系统的使用吧. 首先需要认识两个类,一个是场景scene的属性类SKPhysicsWorld,这个类基于场景,只能被修改但是不能被创建,这个类负责提供重力和检查碰撞(碰撞需要实现SKPhysicsContactDelegate代理协议),另一个就是SKPhysicsBody

cocos2d-js中Chipmunk物理引擎相关(1)

最近看些cocos2d-js的东西,用到其中的Chipmunk的一些东西,因为相关的资料也不是很详细,所以看到一些东西有用就记录下来. 1. chipmunk是cocos2d的一个一个物理引擎,用来模拟重力,碰撞等等的现实场景. 一个chipmunk body代表虚拟空间中的一个物体,他可能会包含一个或者多个chipmunk shape从而构成它的几何形状. 比如将一个动态的chipmunk物体加入到场景中: 初始化: this.body = new cp.Body(1, cp.momentFo

转:Bullet物理引擎不完全指南(Bullet Physics Engine not complete Guide)

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 前言 Bullet据称为游戏世界占有率为第三的物理引擎,也是前几大引擎目前唯一能够找到的支持iPhone,开源,免费(Zlib协议,非常自由,且商业免费)的物理引擎,但是文档资料并不是很好,Demo虽然多,但是主要出于特性测试/展示的目的,会让初学者无从看起,一头雾水.我刚学习Bullet的时候困于没有好的文档及资料,非常没有头绪,折腾了很久,所以就发挥没有就创造的精神,写作及整

关于cocos2d-X 3.x版本使用引擎自带的物理引擎Physics

今天本来打算使用BOX2D物理引擎的, 想到前段时间听说cocos2d-X在3.0版本中封装了一个自己的物理引擎Physics, 听名字就很霸气额, 用起来确实是比BOX2D简单很多( 毕竟是基于BOX2D封装的嘛), 好了, 现在我们来看看如何使用Physics这个物理引擎, 第一步: 创建项目............略 第二部: 修改场景的创建方式 将Scene::create();换成Scene::createWithPhysics(); Scene* HelloWorld::create

瘸腿蛤蟆笔记28-cocos2d-x-3.2 Box2d物理引擎collision模块介绍

上篇回顾 本篇名言:绝不测量山的高度─除非你已到达顶峰,那时你就会知道山有多低. [哈马绍] 上篇中,我们学习了Box2d物理引擎的三大模块之一的common模块,该模块主要包含设置,内存管理和向量数学. 这次蛤蟆接着学习collison模块. 理论介绍 这个collision模块包括了shapes和函数.同时包括一个动态树和broad-phase(蛤蟆不知道怎么解释这个)用于加速碰撞系统.这个模块设计的时候是在动态系统之外使用的.        Shape 这里的shapes描述了碰撞几何,可

cocos2d-x3.0 Physics新的物理引擎

1.说明: 3.0以后将box2d和chipmunk这两个物理引擎进行了封装,使用起来很的便利 2.详细用法: 1.创建物理世界场景 auto scene = Scene::createWithPhysics(); scene->getPhysicsWorld()->setDebugDrawMask(PhysicsWorld::DEBUGDRAW_ALL); //调试时使用 2.在场景中加入重力 Vect gravity = Vect(0.0f, -10.0f); //-10表示重力向下 sc

瘸腿蛤蟆笔记29-cocos2d-x-3.2 Box2d物理引擎dynamics模块介绍

上篇回顾 本篇名言:奋斗.寻觅.发现,而不屈服.[诗人丁尼生] 上篇中,我们学习了Box2d物理引擎的三大模块之一的collision模块,该模块主要包含形状shape,碰撞函数和动态树等概念. 这次蛤蟆接着学习dynamics模块. 理论介绍 Dynamics模块是Box2d引擎中最复杂的,也是基本上我们打交道最多的模块了.该模块建立在common和collision模块之上,所以需要我们先了解common和collision模块. Dynamics模块包含几大类:  fixture cla

ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述

ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述 Rviz Rviz是ROS数据可视化工具,可以将类似字符串文本等枯燥的数据以二维或三维等非常形象的可视化方式进行显示,如下:   除此之外,也是重要的人机交互界面,如下以一个六足机器人为例: 单足(初始--调整):           数值结果如下: --- header: seq: 9034 stamp: secs: 1487127789 nsecs: 815

Cocos2d-x 使用物理引擎进行碰撞检测

[转自]: http://blog.csdn.net/cbbbc/article/details/38541099 通常在游戏简单逻辑判断和模拟真实的物理世界时,我们只需要在定时器中判断游戏中各个精灵的条件是否满足判断条件就可以了.例如,在飞机大战中,判断我方子弹和敌机是否发生碰撞一般在定时器中通过敌机所在位置的矩形是否包括了子弹的位置来判断是否发生碰撞.在消除类游戏中,判断在y轴或x轴上是否要消除相同物品一般在定时器中通过循环来检测在某个方向上是否有连续的相同物品满足消除个数来移除精灵就可以了