摘要:
Box2D是以手机屏幕左上方(0,0)为物理世界的中心坐标。在该物理世界中创建一个物体,一般默认左上角(0,0)作为质心(可以理解中心点)。 Box2D是以米(m)作为单位,而手机中是像素,因为在实际开发中需要转换一下。像素和米的换算单位 RATE=30。 jbox2d.dynamics.World类是引擎Box2D的物理世界,物体和关节都是在物理世界中创建的,如果不在物理世界,则不能进行模拟。参数1:物理世界的范围 参数2:加速度 参数3:如果不动的物体是否进行休眠World(AABB aabb,Vec2 gravity,boolean doSleep)//定义一个物理世界范围AAB... 阅读全文
摘要:
最近公司里面兴起了一股MongoDB的热潮,我抱着增长见识的态度来学习一下他,这里留下我的学习笔记 what‘s MongoDB? 它是NoSql的一个典型代表,具体的可以到百度百科去看看,哪里因为比我这个水货介绍的更清楚 MongoDB官网下载地址:http://www.mongodb.org/downloads,选择匹配自己系统的文件进行下载(文件不是很大 32位 70-80M,64位的 100-105M)。 在F(你也可以C,D,E,F)盘下创建一个MongoDB的文件夹。将下载好后的文件解压出来,选择其中bin文件夹下面的exe文件复制到刚在F盘创建的MongoDB文件夹,再... 阅读全文
摘要:
Android游戏中常用的两种播放音乐的方式:第一:MediaPlayer,第二:SoundPool。第一种比较适合用于游戏的背景音乐,第二种适用于游戏音效(例如:子弹打中敌机出现的爆炸声)。SoundPool类播放的音乐文件不能大于1M,所以背景音乐选择SoundPool不太适合,那为什么游戏音效不选择MediaPlayer呢?因为在快速连续点击播放的情况下,MediaPlayer会出现延迟的情况,这样就会影响的游戏的用户体验(子弹打中敌机后过了几秒才发生音效)。 MediaPlayer//实例音乐播放器mediaPlayer = MediaPlayer.create(context,... 阅读全文
摘要:
Region碰撞检测 Region类在android开发中经常用到,特别是该类的一个判断点是否在矩形区域内的函数——Region.contains(int x,int y)经常用到。 下面来一个例子:package com.example.collidedemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;impor... 阅读全文
摘要:
在之前说过,像素检测是最精确的一种方式,但是一般为了性能方面的考虑,因为很少用到,但是游戏中很少会有这种纯粹的圆或矩形做检测,这个时候我们就会考虑用多矩形的方式来做检测。 多矩形的原理是:将一个物体A分解成多个矩形组成A组,将另外一个物体B分解成多个矩形组成B组,然后通过A组中的矩形和B组中的矩形是否发生了碰撞就可得知物体A与物体B是否发生了碰撞。/** * * @param rectArray * 物体1的数组 * @param rect2Array * 物体2的数组 * @param rec... 阅读全文
摘要:
圆形检查的思路:两个圆的圆心距小于两个圆的半径之和则相碰撞了,反之,没有发生碰撞 /** * 两个圆的碰撞检测 * @param x1 * @param y1 * @param r1 * @param x2 * @param y2 * @param r2 * @return */ public static boolean CheckCollideCircle(int x1, int y1, int r1, int x2, int y2, int r2) { boolean ... 阅读全文
摘要:
碰撞检测常用的分三类:圆形检测、矩形检测、像素检测。像素检测是最为精确的一种,但是它对性能消耗也是最大的一种,因为一般游戏中很少用到。 矩形检查 思路:可以检查两个矩形的相对位置,如果RectA在RectB的上下左右,且两个矩形没有挨着,则可以判定他们没有碰撞,反之就发生碰撞了。 /** * * @param x1 矩形1的X坐标 * @param y1 矩形1的Y坐标 * @param w1 矩形1的宽 * @param h1 矩形1的高 * @param x2 矩形2的X坐标 * @param y2 矩形2的Y坐标 ... 阅读全文
摘要:
SurfaceView运用 android.view.SurfaceView是游戏开发中常用的框架,他继承android.view.View,与View相比,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。因此开发游戏而言,如果属于要求主动更新界面的就用SurfaceView(例如赛车类,需要一个独立线程去更新界面,防止主线程阻塞),属于被动更新(棋类游戏)可以用View框架(调用invalidate方法更新)。 上面粗糙的介绍了SurfaceView和View。下面来个简单的例子说明SurfaceView。 创建一个MySurfac... 阅读全文
摘要:
玩过游戏的朋友都知道,不管是RPG游戏或者是飞行射击又或者其他类型的游戏,都会有这中功能——控件角色的移动。现在就来实现这个功能。 这是一张用来展示角色行走的图片,大小 188*380,名字是hero.png。首先新建一个class(RoleAnimation.java),该类主要是绘制hero.png中的单个角色和连贯的动画,方便其他地方调用public class RoleAnimation { /** 上一帧播放时间 **/ private long mLastPlayTime = 0; /*... 阅读全文
摘要:
View类常需要实现的抽象函数 public class MyView extends View { public MyView(Context context) { super(context); } /** * 该方法在该View实例化的时候自动就调用了 */ @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); } /** * 按键按下的事件 */ @Override publi... 阅读全文