摘要: 软件设计模式告诉我们,程序中不同的领域要保持隔离,也就是解耦。所以,我们不希望AI,物理引擎,渲染引擎,声音引擎,还有其他的事情影响到彼此,不能把他们放到同一个类里。下面是一个反例:if (collidingWithFloor() && (getRenderState() != INVISIBLE)){ playSound(HIT_FLOOR);}如果有人要修改这段代码,那么他就需要查看物理,绘图,和声音的代码以保证不会出错。更糟糕的情况是,你可能需要修改其他部分的代码!解决的办法:我们可以吧不同的领域分割城不同的组件,谈后需要的时候持有这些组件的实例,例如InputCompo 阅读全文
posted @ 2013-04-02 11:07 shangdahao 阅读(4438) 评论(0) 推荐(1) 编辑
摘要: 一、box2d基础知识1、关于Box2D 是一个用于游戏的 2D 刚体仿真库。从游戏的视角来看,物理引擎就是一个程序性动画(proceduralanimation)的系统,而不是由动画师去移动你的物体。1、核心概念刚体(rigid body)一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。形状(shape)一块严格依附于物体(body)的 2D 碰撞几何结构(collision geometry)。形状具有摩擦(friction)和恢复(restitution)的材料性质。约束(constraint)一个约束(constraint)就是消除物体自由度的物理连接。在 2D 中,一个 阅读全文
posted @ 2013-03-30 22:31 shangdahao 阅读(33839) 评论(2) 推荐(4) 编辑
摘要: Foundation库提供了基本的数据结构,包括strings, arrays, dictionaries等。NSString—–创建字符串的方法—–//1、创建常量字符串 NSString *astring = @”This is a String!”;//2、先创建一个空的字符串,然后赋值;//alloc和init组合则适合在函数之间传递参数,用完之后需要手工release NSString *astring = [[NSString alloc] init];astring = @”This is a String!”;//3、在以上方法中,提升速度:initWithString方法 N 阅读全文
posted @ 2013-03-17 11:04 shangdahao 阅读(846) 评论(0) 推荐(0) 编辑
摘要: 核心动画是一套包含图形绘制,投影,动画的Objective–C类集合。它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流畅的动画。使用核心动画,你只需要设置一些参数比如起点和终点,剩下的帧核心动画为你自动完成。核心动画类有以下分类:提供显示内容的图层类。动画和计时类。布局和约束类。事务类,在原子更新的时候组合图层类。核心动画的基础类包含在Quartz核心框架(Quartz Core framework)里面。图层类是核心动画的核心基础,它提供了一套抽象的概念(假如你使用过NSView或者UIView的话,你一定会对它很熟悉)。C 阅读全文
posted @ 2013-03-17 11:03 shangdahao 阅读(6923) 评论(0) 推荐(0) 编辑
摘要: 转载请注明出处:http://www.cnblogs.com/shangdahao/archive/2012/04/14/2447571.html一、粒子系统简介:粒子系统最早出现在80年代,主要用于解决由大量按一定规则运动(变化)的微小物质在计算机上的生成和显示问题。Particle System的应用非常广泛,大的可以模拟原子弹爆炸,星云变化,小的可以模拟水波、火焰、烟火、云雾等,而这些自然现象用常规的图形算法是很难逼真再现的。Particle System可以说是一种基于物理模型来解决问题的方法,它的核心不在于如何显示,而在用于对微小物质模型的规则提取。粒子运动(变化)的规则可以很简单也 阅读全文
posted @ 2012-04-14 21:11 shangdahao 阅读(15592) 评论(0) 推荐(3) 编辑
摘要: 先看代码publicclassAccelerometerTestextendsGdxTest{@OverridepublicbooleanneedsGL20(){returnfalse;}BitmapFontfont;SpriteBatchbatch;@Overridepublicvoidcreate(){font=newBitmapFont();batch=newSpriteBatch();}@Overridepublicvoidrender(){Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);batch.begin();font.drawMultiLine 阅读全文
posted @ 2011-12-15 16:57 shangdahao 阅读(1839) 评论(0) 推荐(0) 编辑
摘要: Libgdx 是一个Java framework 提供了跨平台 API 的游戏开发框架. 你开发的游戏直接就可以在Android和桌面运行,不需要修改。当然你可能会觉得桌面的是个鸡肋。不过它对实时调试作用很大。下面我们通过Hello world的Demo进入底层看看LibGDX的整个生命周期:publicclassHelloWorldAndroidextendsAndroidApplication{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);initialize 阅读全文
posted @ 2011-12-08 11:22 shangdahao 阅读(3985) 评论(0) 推荐(2) 编辑
摘要: 阅读源码是最好的学习方法,下面我们以愤怒的小鸟为例,看看如何把一个android游戏反编译成可读的源码。工具介绍:1、apktool 这个工具用来解压xml文件到http://code.google.com/p/android-apktool/downloads/list下载前两个文件,并解压到Android SDK的platform tools 目录。在命令行里的用法:apktool d 你的apk.apk 解压到指定文件夹,例如:apktool dF:\学习\android\反编译\愤怒的小鸟.apkF:\学习\android\反编译\愤怒的小鸟<?xmlversion=" 阅读全文
posted @ 2011-12-05 10:14 shangdahao 阅读(8999) 评论(7) 推荐(11) 编辑
摘要: 一、Activity生命周期游戏开发时我们只需要重载onCreate(), onResume(), 和onPause() 方法,因为无论如何onResume(), 和onPause() 都会调用。当onPause() 之后,系统可能由于内存过低杀掉该activity,然后onStop() 和onDestroy()就不会被执行,而onStart()要在onStop()执行了才会被调用,onpause()之后唤醒activity只会调用onResume().1)In onCreate(), we set up our window and UI component that we render . 阅读全文
posted @ 2011-11-07 21:19 shangdahao 阅读(2876) 评论(2) 推荐(2) 编辑
摘要: 游戏的组成部分:1)Window management: This is responsible for creating a window and coping with things like closing the window or pausing/resuming the application on Android. 2)Input: This is related to the window management module, and keeps track of user input (e.g., touch events, keystrokes, and accel... 阅读全文
posted @ 2011-11-06 14:33 shangdahao 阅读(2070) 评论(0) 推荐(3) 编辑