没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
6页
本文实例讲述了Android游戏开发学习之引擎用法。分享给大家供大家参考。具体如下: 汽车引擎是汽车的心脏,其决定了汽车的性能和稳定性,是人们在购车时相当关注的。而游戏中的物理引擎就如汽车的引擎一样,占据了非常重要的位置。一款好的物理引擎可以非常真实地模拟现实世界,使得游戏更加逼真,提供更好的娱乐体验。 一、JBox2D简介 JBox2D是开源物理引擎Box2D的Java版本,可以直接用于Android。由于JBox2D的图形渲染使用的是Processing库,因此在Android平台上使用JBox2D时,图形渲染工作只能自行开发。该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数和弹性
资源详情
资源评论
资源推荐
Android游戏开发学习之引擎用法实例详解游戏开发学习之引擎用法实例详解
本文实例讲述了Android游戏开发学习之引擎用法。分享给大家供大家参考。具体如下:
汽车引擎是汽车的心脏,其决定了汽车的性能和稳定性,是人们在购车时相当关注的。而游戏中的物理引擎就如汽车的引擎一
样,占据了非常重要的位置。一款好的物理引擎可以非常真实地模拟现实世界,使得游戏更加逼真,提供更好的娱乐体验。
一、一、JBox2D简介简介
JBox2D是开源物理引擎Box2D的Java版本,可以直接用于Android。由于JBox2D的图形渲染使用的是Processing库,因此在
Android平台上使用JBox2D时,图形渲染工作只能自行开发。该引擎能够根据开发人员设定的参数,如重力、密度、摩擦系数
和弹性系数等,自动地进行2D刚体物理运动的全方位模拟。
二、示例二、示例
1.小球弹跳进阶版
在第1节中小球的下落、碰撞、弹起都是用代码来维护的,下面使用物理引擎来实现,并且加入了刚体之间的碰撞。
(1)常量类Constant
package box2d.bheap;
public class Constant {
public static final float RATE=10; //屏幕与现实世界的比例
public static final boolean DRAW_THREAD_FLAG=true; //绘制线程工作标识位
public static final float TIME_STEP=2.0f/60.0f; //模拟的频率
public static final int ITERA=10; //迭代次数
public static int SCREEN_WIDTH; //屏幕宽度
public static int SCREEN_HEIGHT; //屏幕高度
}
(2)抽象类MyBody
该类为自定义的抽象类,是所有自定义刚体类的基类。由于JBox2D中的刚体类对象仅具有物理仿真计算的功能,并没有提供
Android平台下的绘制功能,直接使用不是很方便。因此,这里定义了MyBody对自定义刚体的绘制及JBox2D物理仿真对象进
行了封装。
package box2d.bheap;
import org.jbox2d.dynamics.Body;
import android.graphics.Canvas;
import android.graphics.Paint;
public abstract class MyBody {
Body body; //JBox2D物理引擎中的刚体
int color; //刚体的颜色
public abstract void drawSelf(Canvas canvas,Paint paint); //绘制的方法
}
(3)圆形刚体类MyCircleColor
package box2d.bheap;
import org.jbox2d.dynamics.Body;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import static box2d.bheap.Constant.*; //静态导入
public class MyCircleColor extends MyBody {
float radius; //圆形半径
public MyCircleColor(Body body,float radius,int color) {
this.body=body;
this.radius=radius;
this.color=color;
}
@Override
public void drawSelf(Canvas canvas, Paint paint) {
paint.setColor(color&0xCFFFFFF); //设置颜色
float x=body.getPosition().x*RATE;
float y=body.getPosition().y*RATE;
canvas.drawCircle(x, y, radius, paint); //画圆
paint.setStyle(Style.STROKE); //设置空心无填充
paint.setStrokeWidth(1);
paint.setColor(color); //画边
canvas.drawCircle(x, y, radius, paint);
paint.reset(); //恢复画笔设置
}
weixin_38601215
- 粉丝: 1
- 资源: 948
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0