《android游戏编程之从零开始》第六章样章
6页1、 1 6.1 360平滑游戏导航摇杆 在 Android 系统中很多机型是没有实体导航按键的,那么如果想让一个游戏在所有Android 系统的机型上运行,就要利用 Android 系统都支持触屏的特点来进行设计。既然所有 Android 系统都支持触屏,那么就可以想到,在屏幕上绘制一个游戏摇杆供用户操作游戏,这也是目前 Android 游戏开发中最常用的一种做法了。 下面就来实现Android手机上的360平滑游戏摇杆吧!首先观察如图6-1所示的效果 。 图 6-1 摇杆示意图 图 6-1 是一个摇杆的示意图,从图中加以分析: l 玩家操作的应该是中心红色的小圆; l 小圆的最大活动范围是围绕大圆做圆周运动; l 既然小圆有活动范围,那么当用户的触屏点在大圆以外的位置,那么小圆的角度应该与用户触点的角度相同。 首先实现的应该是在屏幕上绘制两个大小不一的圆形 , 并且让小圆中心点围绕大圆做圆周运动。 新建项目“RockerProject”,游戏框架为 SurfaceView 游戏框架,项目对应的源代码为“6-1(360平滑游戏摇杆)”。 修改 MySurfaceView: /定义两个圆形
2、的中心点坐标与半径 private float smallCenterX = 120, smallCenterY = 120, smallCenterR = 20; private float BigCenterX = 120, BigCenterY = 120, BigCenterR = 40; /当前圆周运动的角度 private int angle; /修改绘图函数: public void myDraw() 2 . /绘制大圆 paint.setAlpha(0x77); canvas.drawCircle(BigCenterX, BigCenterY, BigCenterR, paint); /绘制小圆 canvas.drawCircle(smallCenterX, smallCenterY, smallCenterR, paint); . 新封装一个圆周运动时,得到小圆坐标的方法: /* * 小圆针对于大圆做圆周运动时,设置小圆中心点的坐标位置 * param centerX * 围绕的圆形(大圆)中心点X坐标 * param centerY * 围绕的圆形(大圆)中心点Y坐
3、标 * param R * 围绕的圆形(大圆)半径 * param rad * 旋转的弧度 */ public void setSmallCircleXY(float centerX, float centerY, float R, double rad) /获取圆周运动的X坐标 smallCenterX = (float) (R * Math.cos(rad) + centerX; /获取圆周运动的Y坐标 smallCenterY = (float) (R * Math.sin(rad) + centerY; 这里是根据角度弧度的转换,再通过三角函数定理得到小圆坐标位置的。 逻辑函数: private void logic() /让角度在0360循环 angle+; if (angle = 360) angle = 0; /弧度 = 角度PI/*180 setSmallCircleXY(BigCenterX, BigCenterY, BigCenterR, angle * Math.PI / 180); 运行项目,效果如图 6-2 所示。 3 图 6-2 圆周运动 此步完成之后,下面
4、就应该考虑用户触点的位置,大概分为两种情况: l 用户触点位置在大圆内或者大圆上,那么小圆的中心点直接跟随玩家触点位置即可; l 用户触点位置在大圆外,那么小圆中心肯定在大圆的圆周上,但是小圆所在大圆上的角度,应该等同于用户触点位置相对于大圆的角度。 首先删去刚才在逻辑函数中的代码,然后封装一个得到玩家触点相对于大圆角度的方法: /* * 得到两点之间的弧度 * param px1 第一个点的X坐标 * param py1 第一个点的Y坐标 * param px2 第二个点的X坐标 * param py2 第二个点的Y坐标 * return */ public double getRad(float px1, float py1, float px2, float py2) /得到两点X的距离 float x = px2 - px1; /得到两点Y的距离 float y = py1 - py2; /算出斜边长 float Hypotenuse = (float) Math.sqrt(Math.pow(x, 2) + Math.pow(y,2); /得到这个角度的余弦值(通过三角函数中的
《《android游戏编程之从零开始》第六章样章》由会员wt****50分享,可在线阅读,更多相关《《android游戏编程之从零开始》第六章样章》请在金锄头文库上搜索。
高电压技术 第一章第四节 起始电压与气压的关系
风湿免疫病的新认识与新进展
频数分布表与频数分布直方图1
青岛版九上1.1《平行四边形及其性质》(1)
集团整体业务群的战略安排
金钱_共同面对的话题71171
重要有机物的制备
重性精神疾病的防治培训
酵母醇脱氢酶的提取及专一性测定
高二选修(溶液的酸碱性)2010hy
高二生物必修3《生态系统的物质循环》课件
高一数学集合的基本关系
陈-从梯子的倾斜程度谈起(2)
阿卡宁衍生物合成产物中乙酰胆碱酯酶抑制剂的筛选 -
课题1 海带中碘元素的分离及检验
说不尽的桥课件1
语法--英语词性分类及用法
记忆与知识的储存
解读“引起近视的其它原因”
计算机算法设计与分析(第3版)第2章
2023-08-15 5页
2023-07-18 2页
2023-04-07 5页
2023-04-06 4页
2023-04-06 3页
2023-04-06 4页
2023-04-06 3页
2023-04-06 3页
2023-04-06 2页
2023-04-06 2页