随笔分类 -  Android游戏开发学习日记

摘要:学android也将近一个月了。也练习了许多的功能点(比较分散)的代码,所以想做一个简单demo来把学习的总结一下。 我的思路很简单,一个敌人在上方左右移动,没两秒中向下发出一颗子弹,主角在下方,但是可以上下移动,并朝上方发射子弹。相互检查对方的子弹击中对方,如击中就判断出胜负,并且游戏结束。其中也运用到程序切割图片用来展示主角的上下左右移动时的动画。 游戏中用到了两张图片,主角和敌人共用一张,子弹一张 下面我将分别展示开发练习中所用到的类,以及代码。 动画类:MyAnimation.javaView Code import java.io.I... 阅读全文
posted @ 2013-04-10 00:24 消逝的落叶 阅读(1845) 评论(0) 推荐(0)
摘要:Box2D是以手机屏幕左上方(0,0)为物理世界的中心坐标。在该物理世界中创建一个物体,一般默认左上角(0,0)作为质心(可以理解中心点)。 Box2D是以米(m)作为单位,而手机中是像素,因为在实际开发中需要转换一下。像素和米的换算单位 RATE=30。 jbox2d.dynamics.World类是引擎Box2D的物理世界,物体和关节都是在物理世界中创建的,如果不在物理世界,则不能进行模拟。参数1:物理世界的范围 参数2:加速度 参数3:如果不动的物体是否进行休眠World(AABB aabb,Vec2 gravity,boolean doSleep)//定义一个物理世界范围AAB... 阅读全文
posted @ 2013-04-07 23:18 消逝的落叶 阅读(1035) 评论(0) 推荐(0)
摘要:Android游戏中常用的两种播放音乐的方式:第一:MediaPlayer,第二:SoundPool。第一种比较适合用于游戏的背景音乐,第二种适用于游戏音效(例如:子弹打中敌机出现的爆炸声)。SoundPool类播放的音乐文件不能大于1M,所以背景音乐选择SoundPool不太适合,那为什么游戏音效不选择MediaPlayer呢?因为在快速连续点击播放的情况下,MediaPlayer会出现延迟的情况,这样就会影响的游戏的用户体验(子弹打中敌机后过了几秒才发生音效)。 MediaPlayer//实例音乐播放器mediaPlayer = MediaPlayer.create(context,... 阅读全文
posted @ 2013-04-06 22:09 消逝的落叶 阅读(777) 评论(0) 推荐(0)
摘要: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... 阅读全文
posted @ 2013-04-06 17:41 消逝的落叶 阅读(1321) 评论(2) 推荐(1)
摘要:在之前说过,像素检测是最精确的一种方式,但是一般为了性能方面的考虑,因为很少用到,但是游戏中很少会有这种纯粹的圆或矩形做检测,这个时候我们就会考虑用多矩形的方式来做检测。 多矩形的原理是:将一个物体A分解成多个矩形组成A组,将另外一个物体B分解成多个矩形组成B组,然后通过A组中的矩形和B组中的矩形是否发生了碰撞就可得知物体A与物体B是否发生了碰撞。/** * * @param rectArray * 物体1的数组 * @param rect2Array * 物体2的数组 * @param rec... 阅读全文
posted @ 2013-04-02 22:47 消逝的落叶 阅读(869) 评论(0) 推荐(0)
摘要:圆形检查的思路:两个圆的圆心距小于两个圆的半径之和则相碰撞了,反之,没有发生碰撞 /** * 两个圆的碰撞检测 * @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 ... 阅读全文
posted @ 2013-04-02 22:18 消逝的落叶 阅读(656) 评论(0) 推荐(0)
摘要:碰撞检测常用的分三类:圆形检测、矩形检测、像素检测。像素检测是最为精确的一种,但是它对性能消耗也是最大的一种,因为一般游戏中很少用到。 矩形检查 思路:可以检查两个矩形的相对位置,如果RectA在RectB的上下左右,且两个矩形没有挨着,则可以判定他们没有碰撞,反之就发生碰撞了。 /** * * @param x1 矩形1的X坐标 * @param y1 矩形1的Y坐标 * @param w1 矩形1的宽 * @param h1 矩形1的高 * @param x2 矩形2的X坐标 * @param y2 矩形2的Y坐标 ... 阅读全文
posted @ 2013-04-02 15:39 消逝的落叶 阅读(1145) 评论(0) 推荐(0)
摘要:SurfaceView运用 android.view.SurfaceView是游戏开发中常用的框架,他继承android.view.View,与View相比,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。因此开发游戏而言,如果属于要求主动更新界面的就用SurfaceView(例如赛车类,需要一个独立线程去更新界面,防止主线程阻塞),属于被动更新(棋类游戏)可以用View框架(调用invalidate方法更新)。 上面粗糙的介绍了SurfaceView和View。下面来个简单的例子说明SurfaceView。 创建一个MySurfac... 阅读全文
posted @ 2013-04-01 23:12 消逝的落叶 阅读(755) 评论(0) 推荐(0)
摘要:玩过游戏的朋友都知道,不管是RPG游戏或者是飞行射击又或者其他类型的游戏,都会有这中功能——控件角色的移动。现在就来实现这个功能。 这是一张用来展示角色行走的图片,大小 188*380,名字是hero.png。首先新建一个class(RoleAnimation.java),该类主要是绘制hero.png中的单个角色和连贯的动画,方便其他地方调用public class RoleAnimation { /** 上一帧播放时间 **/ private long mLastPlayTime = 0; /*... 阅读全文
posted @ 2013-03-31 13:17 消逝的落叶 阅读(889) 评论(0) 推荐(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... 阅读全文
posted @ 2013-03-30 18:28 消逝的落叶 阅读(493) 评论(0) 推荐(0)
摘要:Activity可以看成手机屏幕的一个页面(个人理解),往往开发中会遇到从一个Activity带着数据传递到另一个Activity,做过Web开发的都知道,要想从一个html页面传递参数到另外一个页面最简单的是 url= “http:\\www.google.com.hk?parmter=xxx"。 下面来看看Android的Activity之间的参数传递。 首先创建一个activity_main.xmlView Code <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android 阅读全文
posted @ 2013-03-30 13:56 消逝的落叶 阅读(637) 评论(0) 推荐(0)
摘要:Dialog 对话框在各种应用或者游戏开发都会用到,当然也会以各种不同的方式出现。 第一种:Toast(他不会打断当前正在操作的应用,在屏幕上显示一段时间(2秒左右)后消失)。 代码如下:Toast.makeText(this, "", Toast.LENGTH_LONG).show(); //参数1:Context对象 参数2:对话框提示的内同 参数3:对象框展示的方式 第二种:Builder private Builder builder; private TextView txtTextView; @Override protected void onCre... 阅读全文
posted @ 2013-03-30 13:03 消逝的落叶 阅读(525) 评论(0) 推荐(1)
摘要:ListView控件 首先建立一个xml文件 list_item.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation= 阅读全文
posted @ 2013-03-29 16:09 消逝的落叶 阅读(448) 评论(0) 推荐(1)
摘要:TextView控件 该控件一般是展示一些文本提示内容,和HTML中的 lable标签相似(纯属个人意见)。现在来用代码描述一下TextView的使用。 设置TextView的使用有多种方式(常用的两种): 第一:界面android xml文件直接进行赋值<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="ma 阅读全文
posted @ 2013-03-29 12:34 消逝的落叶 阅读(573) 评论(0) 推荐(1)