听起来挺悬的,好家伙写了一个iPhone的模拟器,模拟了一个Mac OS系统,呵呵,其实不是,我可没那么牛比。
其实写的就是一个专门应对iPhone游戏开发的win平台模拟器,与GameFramework配合,从而极大的提高了哪些熟悉win开发但不熟悉iPhone开发者的开发效率。毕竟我也是Windows开发出身,用vs最熟也最顺手。
这个模拟器主要功能就是与GameFramework进行配合,提供了诸如点选,滑动,震动,设置模拟器朝向等功能,更重要的是与GameFramework配合提供了直接运行脚本,console信息输出,Debug模式等功能。
没有看我前面文章的朋友也许不清楚这里的GameFramework的用途。这里我简单画一个图
iPhone Simulator 一个exe的壳,最大限度提供iPhone常规操作,并提供方便的脚本调试,控制台信息输出等功能
||
//
GameFramework 平台无关的游戏开发框架,抽象出游戏一般的流程个骨架,具体的游戏可在基础上丰富其内容
||
//
Engine 平台无关的游戏引擎,需要注意的是任何逻辑相关的东西都不放在这里,引擎的理想状态是提供功能独立的
模块供GameFramework调用,当然很多情况下很难做到,但要朝这个方向尽自己最大努力
接下来说一下iPhone模拟器需要注意的地方,其实就是模拟iPhone旋转的操作,如果做过iPhone开发的朋友都知道,iPhone可以竖着也可以横着,但横正并不意味着你的viewport的宽高调换,他还是原来那样,你需要把相机旋转才能得到正确的效果。下面我是的为代码,大家可以参考一下:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (GetOrientation() == ORIENTATION_UP) {
glOrtho(left, right, bottom, top, zNear, zFar);
}
else if (GetOrientation() == ORIENTATION_LEFT) {
glRotatef( 90.0f, 0.0f, 0.0f, 1.0f);
glOrtho(bottom, top, left, right, zNear, zFar);
}
这段代码演示了2D在正常情况下(ORIENTATION_UP)坐标原点在做上角,向右是X正方向,向下是Y正方向(和Windows坐标系一直),当向左旋转后依然保证坐标系位于屏幕左上角。这样才能保证逻辑上不用去区分旋转与否。其他选装方式可自行推导。
最后上一张横着的模拟器图