【ANDROID游戏开发二十四】360°平滑游戏摇杆(触屏方向导航)

简介:
本站文章均为  李华明Himi  原创,转载务必在明显处注明: 

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/384.html



此章节为正在创作的游戏开发书籍书稿中的一部分,由于写书的缘故很久没有更新了,挺对不起大家的;那么今天放出书稿中的一部分,让大家先睹为快吧;

在Android系统的手机,有的根本没有实体的上下左右导航按键,所以很多游戏都会有利用Android手机都具有触屏的特性,制作360度摇杆来取代游戏方向键,这样不仅能使界面UI变得很美观,而且更加的方便操作;

下面先来看效果吧:

 

下面开始实现:

 

首先,肯定是绘制两个圆形,无可置疑;圆心点重合,为了区分 ,所以设置了不同颜色;

灰色:固定不动的摇杆背景(也意味着摇杆的活动范围);

红色:摇杆;

然后考虑:红色摇杆肯定跟随手指触屏的位置而移动,那么这个很easy啦,只要在触屏事件中处理,将获取的触屏XY坐标赋值与摇杆XY坐标即可;这个没问题;但是紧接着在思考一个问题:

一般情况下,我们不可能希望摇杆一直跟随手指位置,所以需要一个摇杆的活动区域,也就如同上图中的灰色区域,在灰色区域内摇杆可以随着用户的触屏位置移动,但是一旦用户触屏位置在活动区域之外,摇杆就不应该跑出灰色区域;所以具体实现步骤如下:

1) 得到通过摇杆的坐标与触屏点的坐标得到所形成的角度Angle

2) 根据Angle,以及已知所在圆的半径,算出摇杆所在灰色圆形上做圆周运动的当前X,Y坐标;

首先第一步: 算出摇杆坐标与触屏坐标形成的角度

我们肯定已知摇杆当前坐标,并且当用户触屏时的坐标也可以在触屏按键中得到,那么获取的方法就可以写成一个方法,方法如下:

在Java中 Math类中的反余弦函数返回的不是角度是弧度,这一点要格外注意;

另外一点就是,因为三角函数角度范围是0~180度,所以反之应该是-0~-180度;

通过此函数获取到摇杆与用户触屏位置所形成的角度之后,我们就可以通过圆周公式来得到其摇杆的XY坐标了;方法如下

圆周运动公式:通过三角函数定理得出:

X坐标:所在圆的半径*角度的余弦值

Y坐标:所在圆形半径*角度的正弦值

圆周的大小,由所在圆的半径R的大小来决定;

通过以上的公式我们就可以让摇杆在灰色圆形上做圆周运动,当然除此之外我们还要注意三点:

1:做圆周运动的大小,应该跟灰色区域的半径相同;

2:触屏事件中应该首先判定用户触屏的位置是否在灰色区域中,如果不在,我们就应该获取摇杆与触屏点的角度然后获取摇杆应该在圆周运动上的XY坐标;如果在,就没有处理了,只要将摇杆位置随着用户点击位置就好了;

3:在触屏事件中,当用户手指离开屏幕后,应该让摇杆的位置恢复到初始的位置状态;

下面是整个项目的MySurfaceView中全部代码:

如果大家想美化摇杆,那就让你们的美工给出两张圆形图吧;还在等什么,立刻为你的游戏加上摇杆吧~娃哈哈

好啦,其实这里只是给大家介绍思路,具体的书中,我已经将此封装成了一个摇杆类,这样更加的OOP,至于如何封装,大家可以根据需要自由来设计;今天的博文写的可能不是很清晰,因为我现在脑子昏昏沉沉的  – – 。

从写书开始到现在,每天都3-4点睡觉,唉、不过值得高兴的是,如果没有特殊情况,6月底书籍就要交稿了,大家期待下吧;我也会继续努力这最后两个月的;

本篇源码下载: “360度平滑摇杆(触屏方向导航).rar”            下载地址:  http://vdisk.weibo.com/s/hq4J-


相关文章
|
6月前
|
数据库连接 Android开发
安卓android期末项目之纸牌游戏之三
安卓android期末项目之纸牌游戏之三
62 0
|
6月前
|
存储 Android开发 数据库管理
Android安卓项目猜纸牌游戏之二 实体类
Android安卓项目猜纸牌游戏之二 实体类
29 0
|
3月前
|
算法 Java 定位技术
分享104个益智休闲安卓游戏源码,总有一款适合你
分享104个益智休闲安卓游戏源码,总有一款适合你
144 1
|
1月前
|
Android开发
【Android 从入门到出门】第四章:现代Android开发中的导航
【Android 从入门到出门】第四章:现代Android开发中的导航
22 2
【Android 从入门到出门】第四章:现代Android开发中的导航
|
3月前
|
编解码 移动开发 人工智能
android游戏源码
android游戏源码
76 0
|
4月前
|
Java 定位技术 Android开发
【Android App】利用腾讯地图获取地点信息和规划导航线路讲解及实战(附源码和演示视频 超详细必看)
【Android App】利用腾讯地图获取地点信息和规划导航线路讲解及实战(附源码和演示视频 超详细必看)
61 1
|
4月前
|
XML Java Android开发
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
Android App开发手机阅读中实现平滑翻书效果和卷曲翻书动画实战(附源码 简单易懂 可直接使用)
66 0
|
4月前
|
XML Java Android开发
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
40 0
Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)
|
6月前
|
XML Android开发 数据格式
Android项目猜纸牌游戏之一 界面设计和资源文件的设计
Android项目猜纸牌游戏之一 界面设计和资源文件的设计
49 0
|
8月前
|
Android开发 Windows
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
8989 47