04 2013 档案
摘要:除了上一节所说的方式外,物体之间的消息传体还可以用事件委托的方式。三个物体AA,BB,CCAA上挂了一个委托事件的脚本using UnityEngine;using System.Collections;public class DelegetEvent : MonoBehaviour { public delegate void EventHandler(GameObject obj); //委托 public event EventHandler MouseOver; //事件 void OnMouseOver() { //鼠标离开触发 if (Mo...
阅读全文
摘要:gameObject.SendMessageUpwards() 和gameObject.SendMessage()适合在子物体和父物体进行消息的传递。 比如 AA物体是BB物体的子物体。 AA物体上的脚本 void Start () { gameObject.SendMessageUpwards("ReviceMsgTest", 5.0, SendMessageOptions.RequireReceiver); //发送信息,子物体的ReviceMsgTest放进进行接收 参数二:方法ReviceMsgTest的参数 参数三:发送的方式(要求对方是否必须有ReviceM..
阅读全文
摘要:新建一个立方体Cube,在立方体上挂上该脚本:using UnityEngine;using System.Collections;public class MoveDir : MonoBehaviour { // Use this for initialization void Start () { // rigidbody.AddForce(new Vector3(0, 0, 500)); //这个是给物体一个向前的力,使其运动 } void Update () { //每帧都会执行一次,详情可以看Unity3d圣典 switch...
阅读全文
摘要:Prefabs在unity3d中用的比较多,怎么理解这个东西呢?我把它当作是一个在代码未运行就创建好的一个物体,我们可以在代码里重复引用它,这样相当于实现了物体的多用(与我们写代码的重用很相识哟)。 首先新创建一个预设 (注意颜色是灰色的) 然后我新建一个物体将Cube物体拖到刚才新建的预设上,结果如图:预设变成了蓝色了,我们把创建的物体删掉。然后新建一个C#脚本。写入下面代码 public GameObject obj; //传入的预设 // Use this for initialization void Start () { //参数一:是预设 参数二:...
阅读全文
摘要:学android也将近一个月了。也练习了许多的功能点(比较分散)的代码,所以想做一个简单demo来把学习的总结一下。 我的思路很简单,一个敌人在上方左右移动,没两秒中向下发出一颗子弹,主角在下方,但是可以上下移动,并朝上方发射子弹。相互检查对方的子弹击中对方,如击中就判断出胜负,并且游戏结束。其中也运用到程序切割图片用来展示主角的上下左右移动时的动画。 游戏中用到了两张图片,主角和敌人共用一张,子弹一张 下面我将分别展示开发练习中所用到的类,以及代码。 动画类:MyAnimation.javaView Code import java.io.I...
阅读全文
摘要: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...
阅读全文

浙公网安备 33010602011771号