JBox2D For Android - hello box2d

转载 2012年03月25日 21:31:50

鉴于最近工作涉及JBox2D,打算围绕testbed的sample来做些细致的了解。也希望自己学习的同时跟大家探讨。

虽然box2d的手册已经详细的描述了hello box2d的代码,本篇也主要是简单用android实现,没有绘制部分,但是很清楚的描述了box2d运行的基本情况。

</pre><pre name="code" class="java"

  1. /********************************/  
  2. /*Box2D v2.2.0 User Manual 文中代码的android实现版本*/  
  3. /*本例调用JBox2d4Android_2.1.2.jar*/  
  4. /*下载<span style="background-color: rgb(255, 255, 255); ">JBox2d4Android_2.1.2.jar </span> http://download.csdn.net/detail/z1074971432/3831279*/  
  5. /********************************/  
  6. import org.jbox2d.collision.shapes.PolygonShape;  
  7. import org.jbox2d.common.Vec2;  
  8. import org.jbox2d.dynamics.Body;  
  9. import org.jbox2d.dynamics.BodyDef;  
  10. import org.jbox2d.dynamics.BodyType;  
  11. import org.jbox2d.dynamics.FixtureDef;  
  12. import org.jbox2d.dynamics.World;  
  13.   
  14. import android.app.Activity;  
  15. import android.content.Context;  
  16. import android.os.Bundle;  
  17. import android.view.View;  
  18.   
  19. public class Box2d_lesson1_hellobox2dActivity extends Activity {  
  20.     /** Called when the activity is first created. */  
  21.     @Override  
  22.     public void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(new helloBox2dView(this));  
  25.     }  
  26.   
  27.     class helloBox2dView extends View {  
  28.   
  29.         public helloBox2dView(Context context) {  
  30.             super(context);  
  31.             World world;  
  32.             /** Creating a World */  
  33.             {  
  34.                 Vec2 gravity = new Vec2(0, -10f);  
  35.                 boolean dosleep = true;  
  36.                 world = new World(gravity, dosleep);  
  37.             }  
  38.             /** Creating a Ground Box */  
  39.             {  
  40.             // Bodies are built using the following steps:  
  41.                 // Step 1. Define a body with position, damping, etc.  
  42.                 BodyDef groundBodyDef = new BodyDef();  
  43.                 groundBodyDef.position.set(0.0f, 1.0f);  
  44.                 // Step 2. Use the world object to create the body.  
  45.                 Body groundBody = world.createBody(groundBodyDef);  
  46.                 // Step 3. Define fixtures with a shape, friction, density, etc.  
  47.                 PolygonShape groundBox = new PolygonShape();  
  48.                 groundBox.setAsBox(50.0f, 1.0f);  
  49.                 // Step 4. Create fixtures on the body.  
  50.                 groundBody.createFixture(groundBox, 0.0f);  
  51.             }  
  52.             /** Creating a Dynamic Body */  
  53.             Body body;  
  54.             {  
  55.                 BodyDef bodyDef = new BodyDef();  
  56.                 bodyDef.type = BodyType.DYNAMIC;  
  57.                 bodyDef.position.set(0.0f, 4.0f);  
  58.                 body = world.createBody(bodyDef);  
  59.                   
  60.                   
  61.                 PolygonShape dynamicBox = new PolygonShape();  
  62.                 dynamicBox.setAsBox(1.0f, 1.0f);  
  63.                   
  64.                 FixtureDef fixtureDef = new FixtureDef();  
  65.                 fixtureDef.shape = dynamicBox;  
  66.                 fixtureDef.density = 1.0f;  
  67.                 fixtureDef.friction = 0.3f;  
  68.                   
  69.                 body.createFixture(fixtureDef);  
  70.                   
  71.             }  
  72.               
  73.             /** Simulating the World (of Box2D) */  
  74.             {  
  75.                 float timeStep = 1.0f / 60.0f;  
  76.                 int velocityIterations = 6;  
  77.                 int positionIterations = 2;  
  78.                   
  79.                 for (int i = 0; i < 60; ++i)  
  80.                 {  
  81.                     world.step(timeStep, velocityIterations, positionIterations);  
  82.                     Vec2 position = body.getPosition();  
  83.                     float angle = body.getAngle();  
  84.                     System.out.printf("%4.2f %4.2f %4.2f\n", position.x, position.y, angle);  
  85.                 }  
  86.                   
  87.                   
  88.             }  
  89.               
  90.         }  
  91.   
  92.     }  


使用jbox2d物理引擎打造摩拜单车贴纸动画效果

使用jbox2d物理引擎打造摩摆单车贴纸动画效果继上一次实现了ofo小黄人斗鸡眼效果(眼珠跟随手机加速器自动滚动),想看效果的朋友,请点击这篇文章 http://blog.csdn.net/qq_28...

2017上半年技术文章集合【Android】

2017上半年技术文章集合【Android】—184篇文章分类汇总 地址: mp.weixin.qq.com/ 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

2017上半年技术文章集合【Android】—184篇文章分类汇总

地址:mp.weixin.qq.com/声明 | 本文是于亚豪 原创 终端研发部前言: 2017年已经过大半,公众号里技术文章整理和归类了一下,方便给大家查找和阅读。这也是目前 发文的一个统计。 ...

JBox2D For Android - 用canvas绘制shape

protected void onDraw(Canvas canvas) {//view 里的绘制入口 /** 遍历box2d world中的body,并绘制其形状 */ for (Body b = ...

配置JBox2D for android遇到的问题以及解决方法

最近小弟在学习安卓平台下的游戏开发,第一次了解到了Box2D的java版本,于是在自己的电脑上配置,在JBox2D的官网http://code.google.com/p/jbox2d/下载了最新的2....

jbox2d demo for android

  • 2013年11月13日 14:08
  • 2.22MB
  • 下载

box2d中文教程和Jbox2d详解

  • 2012年03月11日 13:51
  • 797KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JBox2D For Android - hello box2d
举报原因:
原因补充:

(最多只允许输入30个字)