文章目录
  1. 1. Box2D
    1. 1.1. Box2D介绍
    2. 1.2. Box2D版本
    3. 1.3. Box2D基本概念
  2. 2. HelloWorld
    1. 2.1. 步骤
    2. 2.2. 概念定义
    3. 2.3. 返回总目录

本节简单介绍一下Box2D,以及其中的一些基本概念。

Box2D


Box2D介绍

Box2D是一个用于游戏的2D刚体仿真库,它是一个非常出名的物理引擎。

程序员可以在他们的游戏里使用它,它可以使物体的运动更加可信,让世界看起来更具交互性。
从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。你可以让牛顿来做导演。

它通过用户设定的参数如重力,密度,摩擦,弹性等参数计算碰撞,角度,力和动力等,使物体运动完全遵循牛顿定律,使游戏中物体的运动更加真实,增强游戏世界中物体动作的真实感,从而提高游戏质量,让游戏场景看起来更具交互性。这些计算需要大量的物理和数学知识。

Box2D版本

Box2D提供C++、Java、flash等版本。

Box2D基本概念

Box2D 中有一些基本的对象,这里我们先做一个简要的定义,在随后的文档里会有更详细的描述。

  • 刚体(rigid body)

一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。它们就像钻石那样坚硬。在后
面的讨论中,我们用物体(body)来代替刚体。

  • 形状(shape)

一块严格依附于物体(body)的2D碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢
复(restitution)的材料性质。

  • 约束(constraint)

一个约束(constraint)就是消除物体自由度的物理连接。在2D中,一个物体有3个自由度。如果我
们把一个物体钉在墙上(像摆锤那样),那我们就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋
转,所以这个约束消除了它2个自由度。

  • 接触约束(contact constraint)

一个防止刚体穿透,以及用于模拟摩擦(friction)和恢复(restitution)的特殊约束。你永远都不必创建
一个接触约束,它们会自动被Box2D创建。

  • 关节(joint)

它是一种用于把两个或多个物体固定到一起的约束。Box2D支持的关节类型有:旋转,棱柱,距离等
等。关节可以支持限制(limits)和马达(motors)。

  • 关节限制(joint limit)

一个关节限制(joint limit)限定了一个关节的运动范围。例如人类的胳膊肘只能做某一范围角度的运
动。

  • 关节马达(joint motor)

一个关节马达能依照关节的自由度来驱动所连接的物体。例如,你可以使用一个马达来驱动一个肘的
旋转。

  • 世界(world)

一个物理世界就是物体,形状和约束相互作用的集合。Box2D支持创建多个世界,但这通常是不必要
的。

HelloWorld


步骤

  1. 建立一个世界,这个世界基于一个b2AABB框,并设立了一个g值和一个是否允许休眠的bool型变量。
  2. 建立一个静态刚体地表,这里讲述了定义Box2D物理引擎中最为重要的一个东西——刚体的详细过程:
  • 首先是定义一个形状(可以是复合形状,这个在第二部分讲述)
  • 然后把形状通过AddShape添加进刚体定义,创建这个刚体。
  1. 重复创建刚体这个过程,直至你没有需求了。
  2. 在你的循环中加入世界的更新函数。

概念定义

  • 世界(b2World):
    世界就是一个环境,所有物理运算都在这个里面进行。

  • 形状定义(b2ShapeDef):
    形状定义是什么?说简单点形状定义就是定义你这个对象的样子,它用来做什么?就是用来确定你的碰撞。

  • 刚体定义(b2BodyDef):
    刚体定义就是设定刚体的初始具体,在目前来说,最大的功能就是把你定义好的形状加到你想到的刚体上。

  • 刚体(b2Body):
    刚体就是物理引擎里面的东西(对象),它可以受力的作用进行当前位置的变化旋转等。你要在世界中使用的所有物体目前来说都是刚体。

返回总目录

码生艰难,写文不易,给我家猪囤点猫粮了喵~

B站: 被删

查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢

如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢

作者:被删

出处:https://godbasin.github.io

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文章目录
  1. 1. Box2D
    1. 1.1. Box2D介绍
    2. 1.2. Box2D版本
    3. 1.3. Box2D基本概念
  2. 2. HelloWorld
    1. 2.1. 步骤
    2. 2.2. 概念定义
    3. 2.3. 返回总目录