Libgdx Box2D现实---这缓释微丸(两:Box2D介绍)



Box2D官方网站 : http://box2d.org/

Box2D v2.1.0用户手冊翻译 : http://blog.csdn.net/complex_ok/article/category/871440

Libgdx使用jni封装了box2d的c++版本号,使得其执行效率比其它同级的物理引擎如jbox2d快不少。

一、基础类

BodyDef 

A body definition holds all the data needed to construct a rigid body. You can safely re-use body definitions. Shapes are added to a body after construction.

定义Body所须要的全部数据都由它负责,我们能够反复使用。

Shape与Body的绑定必须在它之后完毕。

这个我理解为能够通过它来定义物体模型的类型等数据,它放入Body中。

常见使用方法是来定义类型:

BodyDef ballBodyDef = new BodyDef();  //构建对象
ballBodyDef.type = BodyType.DynamicBody;//定义类型,DynamicBody是不受控制的动态物体,KinematicBody是受控制的动态物体,StaticBody是静态物体

Body

A rigid body. These are created via World.CreateBody.

这是一个非常坚硬的物体,不要妄想去改变它的形状。我们仅仅能通过World.CreateBody方法来创建它。

使用方法例如以下(ballModels是body):

ballModels = world.createBody(ballBodyDef);
ballModels.createFixture(fd);

Box2DDebugRenderer

用于測试Box2D的图形显示。会把图形的形状通过不同颜色绘制出来。

ChainShape、CircleShape 、EdgeShape 、PolygonShape 

他们都继承于Shap,是最主要的图形

Fixture

将形状绑定到物体之上, 并有一定的材质属性, 比方密度(density)等。必须由Body.createFixture生成。

FixtureDef

Fixture的属性申明。可反复使用。

FixtureDef fd = new FixtureDef();
		fd.density = 1;//密度
		fd.friction = 0f;//摩擦力
		fd.restitution = 0.5f;//弹力0-1,1为全然弹性碰撞
		fd.shape = shape;

World

The world class manages all physics entities, dynamic simulation, and asynchronous queries. The world also contains efficient memory management facilities.

管理全部物理实体,动态模拟,异步查询。

还包括高效的内存管理机制。

物理世界,管理全部body,

如:

<span style="color:#33cc00;">world = new World(new Vector2(0, -10f), false);//代表向下重力加速度为10的物理世界</span>
<span style="color:#33cc00;"></span>

因为物理世界和render中时间不一致,我们一般要进行转换,就是在render方法中加一句:

world.step(1 / 60f, 10, 10);

同一时候,物理世界參考点在屏幕中心。而stage是(0,0),希望大家可以注意。

物理世界的长度不是依照像素计算的。要注意单位换算。一般换算比是    1:60,。物理世界是1.





版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-12-15 01:35:59

Libgdx Box2D现实---这缓释微丸(两:Box2D介绍)的相关文章

Libgdx Box2D真实---这缓释微丸(三:规则经常使用body和精灵联合)

介绍规则body怎样和图片结合.上一篇文章我介绍了box2D的基本知识,假设你用心的话.你会搜索网上相关简单demo吧.那些我就不写了.那么假设我用图片表示我的那个body.而不是简单线条.那该怎么办? 以下,我以我的项目中小球对象生成为例,介绍精灵和body怎样结合: 以下是创建一个小球类,重要的都凝视了: public class Ball { private static final float BALL_RADIUS = 0.15f;// 球半径 private final Random

box2d——2.添加鼠标关节MouseJoint和box2d基础概念

上一节添加了tiles积木,但不能进行鼠标操作.下面添加鼠标相关的控制. [添加鼠标关节] b2MouseJoint *mMouseJoint [处理按键响应] 设置开启触屏之类的就不说了.在触屏开始的时候要查询相交的形状,根据其夹具fixture获得物体,然后创建它与地面间的鼠标关节. bool CBaseLayer::ccTouchBegan(CCTouch* touch, CCEvent* event) { CCPoint nodePos = convertToNodeSpace(touc

微擎目录结构介绍

pro ├─ addons ---------------- [模块安装目录] (意为附加组件) │ ├─ business -------------- 模块的名称 (示例) │ │ ├─ images 建议 css 文件也放此目录. │ │ ├─ template 模板目录 │ │ │ ├─ mobile APP 端模板目录 │ │ │ │ └─ ... *.html APP 端模板文件 │ │ │ └─ ... *.html Web 端模板文件 │ │ ├─ inc 引用的 php 文件目

微服务与Docker介绍

什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个完整的应用程序的全新迭代.最终的结果是有更多的资源可以提供给其它任务. ? 一种软件架构模式 ? 复杂应用解耦为小而众的服务 ? 各服务精而专 ? 服务间通信通过API完成 微服务应用程序的另一个好处是,它们更快且更容易更新.当开发者对一个传统的单体应用程序进行变更时,他们必须做详细的QA测试,以确

box2d——2.加入鼠标关节MouseJoint和box2d基础概念

上一节加入了tiles积木,但不能进行鼠标操作. 以下加入鼠标相关的控制. [加入鼠标关节] b2MouseJoint *mMouseJoint [处理按键响应] 设置开启触屏之类的就不说了.在触屏開始的时候要查询相交的形状,依据其夹具fixture获得物体.然后创建它与地面间的鼠标关节. bool CBaseLayer::ccTouchBegan(CCTouch* touch, CCEvent* event) { CCPoint nodePos = convertToNodeSpace(tou

微服务框架Lagom介绍之一

背景 Lagom是JAVA系下响应式 微服务框架,在阅读本文之前请先阅读微服务架构设计,Lagom与其他微服务框架相比,与众不同的特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建--这是比较容易的一部分内容.Lagom将其扩展到了微服务所构成的系统,这是大型的系统--也是较为困难的一部分内容,因为在这里我们会面临到分布式系统的复杂性. 通信默认是异步的--基于消息和流--但是,如果需要的话,也考虑到了使用其他的方案,如同步的REST. 持久化默认是基于事件的--使用事件溯源Ev

JHipster创建微服务及相关微服务架构组件介绍

参考链接: jhipster官网 jdl官方语法文档 JHipster中文文档-CSND博客 在线使用jhipster创建应用 在线使用jdl生成器创建数据表和相应服务端代码 一.创建微服务 微服务是一种JHipster应用程序,它没有前端(必须在网关)上生成Angular前端),并且可以与JHipster Registry一起配置,发现和管理. 创建微服务应用 安装: 安装Java 8 from the Oracle website. 安装Node.js from the Node.js we

51CTO学院Python高级自动化开发工程师微职位学员自我介绍

51CTO学院Python高级自动化开发工程师微职位 自我介绍及学习宣言 亲爱的小伙伴:欢迎大家报名51CTO学院&老男孩Alex Python高级自动化开发工程师微职位学习,跟随alex.武sir学习屌炸天的python技术,成就技术大牛之梦.为了督促大家一直积极认真努力的学习,请各位同学在跟帖写出你的自我介绍.学习宣言,不忘初心,一直跟着老师一步一个脚印,扎扎实实学本领. 跟帖格式:我是xxx,我参加了51CTO学院&老男孩Alex Python高级自动化开发工程师微职位学习,从201

SpringBoot + Kubernetes云原生微服务实践 - (1) 介绍与案例需求

学习目标 Dev 掌握微服务架构和前后分离架构设计 掌握基于Spring Boot搭建微服务基础框架 进一步提升Java/Spring微服务开发技能 掌握Spring Boot微服务测试和相关实践 理解SaaS多租户应用的架构和设计 Ops 理解可运维架构理念和相关实践 掌握服务容器化和容器云部署相关实践 理解云时代的软件工程流程和实践 案例需求:Staffjoy工时排班(Scheduling)SaaS服务 功能 管理员Admin管理公司和排班 雇员Worker管理个人信息 非功能 SaaS +