美文网首页
固定的Box2D对象

固定的Box2D对象

作者: 大龙10 | 来源:发表于2022-05-31 06:50 被阅读0次

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
目录

5.8 固定的Box2D对象

  在上面的例子中,盒子对象首先出现在鼠标所在的位置,之后随着Box2D中默认的重力作用下落。假如我们想在Box2D中放置一些固定的边界,这些边界能够阻挡盒子物体运动路径(如下图所示),该怎么实现?

1、锁定

  在Box2D中,我们可以简单地将物体(包括所有已连接的形状)锁定在某个位置。只要把BodyDef对象的type属性设为STATIC。

BodyDef bd = new BodyDef();
bd.type = BodyType.STATIC; 定义的type属性一旦被设为STATIC,物体就被锁定在某个位置

  我们可以在上面的盒子示例程序中加入这个特性,只需要添加一个Boundary类,并且为每个边界分别创建Box2D物体。

2、示例

  示例代码5-2 带有撞击边界的盒子下落模拟

// A fixed boundary class
class Boundary {

  // A boundary is a simple rectangle with x,y,width,and height
  float x;
  float y;
  float w;
  float h;
  
  // But we also have to make a body for box2d to know about it
  Body b;

  Boundary(float x_,float y_, float w_, float h_) {
    x = x_;
    y = y_;
    w = w_;
    h = h_;

    // Define the polygon
    PolygonShape ps = new PolygonShape();
    // Figure out the box2d coordinates
    float box2dW = box2d.scalarPixelsToWorld(w/2);
    float box2dH = box2d.scalarPixelsToWorld(h/2);
    // We're just a box
    ps.setAsBox(box2dW, box2dH);


    // Create the body
    BodyDef bd = new BodyDef();
    bd.type = BodyType.STATIC;
    bd.position.set(box2d.coordPixelsToWorld(x,y));
    b = box2d.createBody(bd);
    
    // Attached the shape to the body using a Fixture
    b.createFixture(ps,1);
  }

  // Draw the boundary, if it were at an angle we'd have to do something fancier
  void display() {
    fill(0);
    stroke(0);
    rectMode(CENTER);
    rect(x,y,w,h);
  }

}

3、运行结果

相关文章

  • 固定的Box2D对象

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • Android OpenGLES3绘图 - LiquidFun

    在看Box2D游戏引擎时,发现了一个很有意思的液体引擎 LiquidFun ,它是Box2D的扩展。给Box2D加...

  • Cocos Creator使用Box2D物理引擎

    【原创博文,转载请注明出处!】 Cocos Creator从1.5版本开始支持Box2D物理游戏引擎,Box2D是...

  • 【Box2D】物理引擎入门001

    一、什么是Box2D Box2D是一个强大的开源物理游戏引擎,用来模拟2D刚体物体运动和碰撞,由Erin Catt...

  • laya2.0 box2d系列一 基础概念和刚体

    一、基础概念 参考拉小登《Box2D物理游戏编程初学者指南》拉小登博客 认识Box2D世界拉小登博客 掉落的苹果—...

  • Android--利用Box2d重力引擎打造小球碰撞效果

    Box2d是一个强大的开源物理游戏引擎,使用c/c++编写,用来模拟2D的物体运动和碰撞。Box2D内部集成了大量...

  • Box2d预览

    初始化box2d 这篇应该是box2d的一个整体的说明,它有哪些功能,还有一些总体的概括。 参数 积分步 Box2...

  • 装饰者模式

    给对象增强的手段1、继承 被增强的对象是固定的 增强的内容也是固定的2、装饰者模式 被增强的对象是可以切换的 增强...

  • UIKit力学(Dynamics)

    UIKit力学是基于Box2D开源物理引擎 UIGravityBehavior 重力 UICollisionBe...

  • 1. 集合 & 数组

    数组:固定长度的对象容器,存储基础类型。[] 集合:动态长度的对象容器,只能存储对象。 collection 一、...

网友评论

      本文标题:固定的Box2D对象

      本文链接:https://www.haomeiwen.com/subject/ojouprtx.html