`
icrwen
  • 浏览: 268579 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

android学习之Box2D

 
阅读更多

一、物理世界与手机屏幕坐标系之间的关系

    手机屏幕绘制图形时,一般默认以左上角作为坐标原点,而在Box2d的物理世界中,一个新的Body(物体)等被创建出来之后,默认以其质心(差不多就是中心点)做为原点,

    注意:还要进行“米”与像素的转换。

 

 二、 BOX2D的常用概念

    a)世界(World) --  世界就是一个环境,所有物理运算都在这个里面运行。   

    b)形状定义(ShapeDef) --  定义对象的样子,用来确定碰撞。

    c)刚体定义(BodyDef)--  设定刚体的初始具体,把定义好的形状加到刚体上。

    d)刚体(Body) -- 物理引擎里面的东西(对象),可以受力的作用进行当前位置的变化旋转等。

 

三、BOX2D理解关键点----是模拟的物理世界,而程序需要做到把模拟的物体运动轨迹转为需要表现的屏幕参数然后再画在屏幕上。

  world.step(timeStep, iterations);//开始模拟

//屏幕绘制的图形与Box2D无关!Box2D引擎只负责提供物理世界的模拟数据。

//如果想让屏幕中显示一个附有重力的图形,那么则需要一个重力物体运动轨迹的数据,

//而Box2D提供的Body正是一个拥有重力的物体。

 //通过将Body在模拟的物理世界中的运动数据传给绘制的图形,

 //绘制的图形就会沿着提供的运动轨迹来运行,也就相当于图形拥有了重力。

 

Vec2 position = body.getPosition();

 Vec2 position1 = body2.getPosition();

 Vec2 position2 = body3.getPosition();

 //注意下面这里是将物体运动轨迹的数据转为屏幕像素坐标,从而画在屏幕上

//此方法获取的是物体的中心点坐标,所以还需要将其X坐标减去物体的宽的一半,

 //Y坐标减去物体的高的一半,得到其左上角坐标。

 //当然如果图形是以中心点进行绘制的话,就可以获取中心点直接将坐标传递给绘制的图形即可。

 this.x = position.x*RATE;

his.y = position.y*RATE;

 this.x1 = position1.x*RATE;

  this.y1 = position1.y*RATE;

  this.x2=position2.x*RATE;

  this.y2=position2.y*RATE;

 

//这里使用转换后的坐标来进行画图

  draw();

\

 

几个快递 请寄: 北京市顺义区顺沙路小中河CIAO!DAFANFAN物流中心 电话15110100050 收件人:亭子 邮编:101300 

分享到:
评论

相关推荐

    android下box2d小demo

    Box2D是一个流行的开源物理引擎...通过这个项目,你可以学习到如何在Android环境中集成Box2D,设置物理世界,创建和管理物理实体,以及处理用户输入和碰撞事件。这将为你构建自己的物理交互应用或游戏打下坚实的基础。

    Android Box2d 例子

    总的来说,"Android Box2D例子"提供了一个学习和实践2D物理模拟的平台。开发者可以通过这个项目了解如何在Android应用中集成Box2D,调试和优化物理模拟,以及解决性能问题。同时,对于初学者,这个例子也是一个很好...

    Android中Box2d初涉小例子

    Box2D是一个流行的开源物理引擎,常用于2D游戏开发,包括Android平台。在这个"Android中Box2D初涉小例子"中,我们将探讨如何在Android应用中集成和使用Box2D来创建逼真的物理模拟。 1. **Box2D简介**: Box2D是由...

    Box2D_02_碰撞_box2D安卓快写代码_box2D_box2d碰撞_

    在“Box2D_02_碰撞”这个主题中,我们将深入探讨Box2D如何处理2D空间中的物体碰撞,以及如何在Android平台上编写C++代码来实现这些功能。 首先,Box2D的核心是它的碰撞检测算法。它使用了精确的几何形状(如矩形、...

    Android Box2d物理世界源码.rar

    Box2D是一个开源的2D物理引擎,广泛用于游戏开发,尤其在移动平台如Android上。这个"Android Box2D物理世界源码"压缩包很可能包含了一整套用于在Android应用中...学习和掌握Box2D对于提升Android游戏开发能力非常有益。

    box2d android版ndk 静态库

    box2d的android版 用ndk编译时把它放到需要它的bin文件底下。。这样就可以在android ndk上使用box2d物理引擎。而不必重新编译box2d库

    box2d中文教程.pdf

    ### Box2D中文教程知识点概览 #### 一、Box2D简介 - **Box2D**是一款2D物理引擎,主要用于游戏开发中物体的物理模拟。它通过提供逼真的物体运动效果,使得游戏世界更加生动有趣。Box2D的核心功能在于能够模拟刚体的...

    box2d中文教程

    Box2D支持多种游戏开发环境,包括iPhone、iPad和Android平台上的Cocos2d游戏引擎和Corona Framework。这意味着它适合多种不同类型的游戏开发,从移动到桌面平台。Box2D通过模拟真实的物理行为,使得游戏中的物体运动...

    cocos2d-x box2d 物理引擎

    《cocos2d-x与Box2D:构建基础物理引擎》 在游戏开发领域,物理引擎扮演着至关重要的角色,它赋予游戏中的对象以真实世界中的运动规律,从而增加游戏的真实感和趣味性。cocos2d-x是一个流行的开源2D游戏开发框架,...

    Cocos2d-android平台基于BOX-2d的重力滚球游戏示例

    《Cocos2d-android平台基于BOX-2d的重力滚球游戏示例解析》 Cocos2d是一款广泛应用于游戏开发的开源框架,其在移动设备上的应用版本Cocos2d-android,为开发者提供了在Android平台上构建游戏的强大工具。本示例中的...

    NDK编译Box2D_V2.2源码

    在Android平台上,为了实现高效且原生的性能,开发者通常会利用NDK(Native Development Kit)来编译Box2D源码,使其运行在C++层,而不是Java虚拟机上。下面将详细介绍如何使用NDK编译Box2D V2.2源码,并将其移植到...

    cocos2dx_box2d实例1

    《cocos2dx_box2d实例1:瓦片积木与Box2D融合解析》 在游戏开发领域,cocos2dx是一个广受欢迎的2D游戏引擎,它提供了丰富的功能和高效的性能。Box2D则是一款强大的物理模拟库,特别适用于2D游戏中的碰撞检测和物理...

    PhysicsEditor-Cocos2d-x-Box2d-master.zip_box2D_cocos2d_cocos2d x

    通过学习这个项目,开发者可以掌握如何在Cocos2d-x游戏中导入并使用Box2D物理系统,以及如何利用PhysicsEditor进行物理世界的可视化设计。这种结合不仅适用于创建基础的2D游戏,对于复杂的物理谜题、平台跳跃或者...

    Box2D中文版API

    ### Box2D中文版API知识点概述 #### 1. 导言 - **1.1 关于Box2D** - Box2D是一款专为游戏设计的2D刚体仿真库,通过它可以让游戏中的物体运动更加真实可信,增强游戏世界的交互性。Box2D的核心目标是提供一个强大...

    Libgdx box2d demo

    在这个名为"Libgdx box2d demo"的项目中,我们看到开发者使用Eclipse作为集成开发环境(IDE),加载并运用了Libgdx引擎,同时整合了Box2D物理引擎,创建了一个学习Box2D的实例。这个实例可能是一个基于小球的游戏,...

    物理引擎Box2D 中文教程

    如果您对 Box2D 的内部工作原理感兴趣,可以通过阅读相关的文档进行学习。 最后,由于 Box2D 使用的是 C++,因此具备一定的 C++ 编程经验是非常必要的。Box2D 不应该是您首次尝试的 C++ 项目;在使用之前,您应该...

    Box 2D 物理引擎

    Box2D物理引擎源码及中文文档;Box2d有C++,flash和Java等版本。android可以直接使用java版本的Jbox2d,但因为Jbox2d的图形渲染是使用processing库来实现的,所以,在android中使用Jbox2d的时候,图形渲染的工作就...

    基于Cocos2dx + box2d 实现的愤怒的小鸟Demo

    通过研究这个Demo,开发者不仅可以了解到Cocos2dx和Box2D的基本用法,还能学习到如何将这两者结合起来,实现一个功能完备的游戏。对于希望提升游戏开发技能的程序员来说,这是一个宝贵的实践案例。

Global site tag (gtag.js) - Google Analytics