首页 理论教育 Android游戏开发:Body施加力实现

Android游戏开发:Body施加力实现

时间:2023-10-22 理论教育 版权反馈
【摘要】:1)施加力的成员函数如下通过上述方法可以应用一个角冲力。其中参数force表示世界力量向量,单位通常为牛顿;参数point表示应用力的点的世界位置。如果在某一点上施加一个冲力,会立即改变速度,并且还会改变角速度,这要看施加力的点在不在质心,该操作会唤醒物体。这样能够创建一个形状和固定装置并把它附加到物体上。接下来将通过一个实例的实现过程,详细讲解在Box2D世界中对Body施加力的方法。

Android游戏开发:Body施加力实现

1)施加力的成员函数如下

978-7-111-54543-9-Part03-138.jpg

通过上述方法可以应用一个角冲力。其中参数表示impulse角冲力,单位为kg*m*m/s。

在一个世界点(World Point)施加一个力。如果这个力没有应用于质心,则该力会产生一个旋转的力矩,且影响角速度,该操作会唤醒(Wakes Up)物体。

(2)再看下面的成员函数。

978-7-111-54543-9-Part03-139.jpg

其中参数force表示世界力量向量,单位通常为牛顿(N);参数point表示应用力的点的世界位置(World Position)。

3)再看下面的成员函数

978-7-111-54543-9-Part03-140.jpg

其中参数impulse表示世界冲力向量,单位通常为牛顿\秒(N\S)或千克米每秒(kg·m/s)point表示应用力的点的世界位置。如果在某一点上施加一个冲力,会立即改变速度,并且还会改变角速度,这要看施加力的点在不在质心,该操作会唤醒物体。

(4)再看下面的成员函数。

978-7-111-54543-9-Part03-141.jpg

这样能够应用一个力矩。在没有影响质心线速度的情况下会影响它的角速度。该操作会唤醒物体。其中参数表示torque关于Z轴(窗口范围外),单位牛顿\米(N\m)。

(5)再看下面的成员函数。

978-7-111-54543-9-Part03-142.jpg(www.xing528.com)

这样能够创建一个形状(Shape)和固定装置(Fixture)并把它附加到物体上。这是一个比较方便的功能。如果需要设置如摩擦(Friction)、恢复度(Restitution)、用户数据、筛选参数(Filtering),请使用b2FixtureDef。如果密度不为0,这个函数会更新物体的质量。

其中参数shape表示被复制的形状;参数density表示形状的密度,静态物体设置为0。

接下来将通过一个实例的实现过程,详细讲解在Box2D世界中对Body施加力的方法。

978-7-111-54543-9-Part03-143.jpg

编写实例文件MySurfaceView.java,此文件的功能是实现一个物理世界,主要代码如下

978-7-111-54543-9-Part03-144.jpg

978-7-111-54543-9-Part03-145.jpg

978-7-111-54543-9-Part03-146.jpg

978-7-111-54543-9-Part03-147.jpg

编写实例文件MyCircle.java绘制圆形,主要代码如下

978-7-111-54543-9-Part03-148.jpg

执行后的效果如图12-12所示

978-7-111-54543-9-Part03-149.jpg

图12-12 执行效果

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈