Android基于box2d开发弹弓类游戏[三]-------------创建游戏世界

前一章中,我们创建了游街场景,这一章中,我们开始最重要的一章,创建游戏世界,期待已久的box2d物理引擎也要登场了!

六.创建游戏世界

之前所做的,都是在游戏场景中画出一些静态图片。不能多物理场景进行模拟。接下来就要创建一个模拟的世界。我们的游戏就将在这个世界中进行模拟。在创建游戏世界之前要确定已经引入了最新版本的jbox2d。 但前jbox2d的最新版本为2.1.2。接下来的代码都是针对2.1.2进行开发的。

1.     模拟世界

需要添加一些变量

复制代码
//添加一个世界需要的变量--->>>
    private final float RATE = 30; //屏幕到现实世界的比例 30px:1m;为了能够真实的模拟现实世界,在jbox2d中,所有的单位都是以米为标准的。所以需要设定一个屏幕到现实世界的比例。在屏幕中30像素代表现实世界中的1米。
    private World world; //物理世界
    private Vec2 gravity;// 声明一个重力向量对象
    private float timeStep = 1f / 60f;// 物理世界模拟的的频率
    private int iterations = 10;// 迭代值,迭代越大模拟越精确,但性能越低
 
然后再MainView构造方法中对变量进行初始化。
// --添加一个物理世界--->>
    gravity = new Vec2(0f, 10f); // 模拟显示世界的重力 横向重力为0,纵向重力为10
    world = new World(gravity, true); // 为游戏世界添加重力,并且使世界处于睡眠状态,当物体进行改变时,在唤醒世界。这样可以很好的节省系统资源。
复制代码

通过以上的代码,已经模拟出了一个游戏世界。

2.     在世界中创建物体

游戏世界是由各种各样的物体组成的,下面介绍如何创建一个物体。分为以下六步。

  • 设置形状
  • 创建夹具
  • 为夹具绑定形状
  • 创建刚体
  • 通过刚体在世界中创建物体
  • 为物体绑定夹具

下面介绍一些刚体。以下是百度百科的解释:在任何力的作用下,体积和形状都不发生改变的物体叫做刚体(Rigid body)。在物理学内,理想的刚体是一个固体的,尺寸值有限的,形变情况可以被忽略的物体。不论有否受力,在刚体内任意两点的距离都不会改变。在运动中,刚体上任意一条直线在各个时刻的位置都保持平行。

下面创建一个方法CreateFloorBody()。用来创建地面。

3.     创建大地

此时已经创建了世界。但是这个世界是无限延伸的,为了更好的模拟现实世界。接下来需要为这个世界添加大地。

四个参数分别为:x轴位置,y轴位置,宽度,高度

复制代码
public Body createBorderBody(float x,float y,float width,float height)    {
   
    PolygonShape ps = new PolygonShape();//创建形状
    ps.setAsBox(width/2/RATE, height/2/RATE);//形状为一个矩形
   
    FixtureDef fd = new FixtureDef();//创建夹具
    fd.shape = ps;//为夹具绑定形状
    fd.density = 0;//设置密度,当密度为0时,这个物体为静止状态。
    fd.friction = 0.8f;//设置摩擦力
    fd.restitution = 0.3f;//设置恢复力
   
    BodyDef bd = new BodyDef();//创建刚体
    bd.position.set((x+width/2)/RATE, (y+height/2)/RATE);//创建刚体范围
    bd.type = BodyType.STATIC;//设置刚体类型,设置为静态刚体
   
    Body body = world.createBody(bd);//创建物体并制定刚体
    body.createFixture(fd);//为物体制定夹具
   
    return body;
 }
复制代码

方法有了,接下来就要定义地面变量

private Body floorBody;

surfaceCreated方法中创建floorBody物体

floorBody = CreateFloorBody(0, ScreenH-FLOOR_HEIGHT, gameWidth, FLOOR_HEIGHT);

此时第一个物体创建完成。有了大地,模拟的世界就更加真实了。此时运行环境还不能看出任何效果。但是,我们的游戏世界确确实实的存在了。

不要着急,我们会在下一章节中创建世界中的物体----》发射器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值