4.如何实现触控操作
触控操作概述:
随着APPLE、Samsung、SONY等众多公司,将掌机、电脑和手机等产品在触控领域的不断探索,以触控为操作的机型越来越多的被投放到市场当中。触控游戏、触控软件的大量被开发以和应用,宣布着触控时代的到来。跑酷游戏作为一直以来备受玩家亲睐的游戏,大量的移植到触控平台上。当触控游戏操作界面,摆脱了传统的点控操作,又是怎样实现玩家与游戏交互的呢?这就较之以前的跑酷游戏,需要我们先对在触控板上的操作进行指令判定,进而游戏角色根据相应指令执行相应操作。
原理:
如图4-1所示
图4-1
实现方法:
步骤1:
在游戏的主循环里会对移动输入做Tick检测,在Tick中,会记录手指的坐标移动位置。
01 |
if (Input.GetScreenTouchCount () == 1) |
02 |
{ |
03 |
int id = Input.GetScreenTouchID (0); |
04 |
if (Input.IsFingerDown (id)) |
05 |
//检测到手指按压屏幕,获取当前像素点坐标,并将手指沿X、Y轴方向位移初始化为0 |
06 |
{ |
07 |
m_pixelPos = Input.GetScreenTouchPixelPosition (id); |
08 |
m_Bias.X = 0.0f; |
09 |
m_Bias.Y = 0.0f; |
10 |
} |
11 |
//时时计算手指发生的位移变化 |
12 |
if (Input.IsFingerPressing (id)) |
13 |
{ |
14 |
Vector2 temp = Input.GetScreenTouchPixelPosition (id); |
15 |
m_Bias = temp - m_pixelPos;} |
16 |
//检测到手指抬起,将位移变化归零。 |
17 |
if (Input.IsFingerUp (id)) |
18 |
{ |
19 |
Vector2 temp = Input.GetScreenTouchPixelPosition (id); |
20 |
m_Bias = temp - m_pixelPos; |
21 |
m_pixelPos.X = 0.0f; |
22 |
m_pixelPos.Y = 0.0f;} |
23 |
} |
24 |
} |
25 |
} |
步骤2:
可以根据这个位置信息,来判定玩家做出了左右移动或者上下滑动中哪种指令。开发者可根据自行设定的上划屏对应角色操作,来完成得到指令操作之后的角色相关操作内容。
01 |
public bool IsLeftSlide() |
02 |
//以判定手指向左滑动举例 |
03 |
{ |
04 |
if (Input.GetScreenTouchCount()== 1) |
05 |
{ |
06 |
int id = Input.GetScreenTouchID(0); |
07 |
float x = ABS(m_Bias.X); |
08 |
float y = ABS(m_Bias.Y); |
09 |
if (x > y) |
10 |
//判定手指为横向操作 |
11 |
{ |
12 |
if (m_Bias.X < 0) |
13 |
//判定手指向左滑 |
14 |
{ |
15 |
m_Bias.X = 0.0f; |
16 |
m_Bias.Y = 0.0f; |
17 |
return true ; |
18 |
} |
19 |
} |
20 |
} |
21 |
return false ; |
22 |
} |
23 |
//定义ABS取为绝对值 |
24 |
private float ABS( float f) |
25 |
{ |
26 |
if (f>0.0f) |
27 |
{ return f;} |
28 |
return -f; |
29 |
} |
引擎官方网站:http://www.genesis-3d.com.cn/
官方论坛:http://bbs.9tech.cn/genesis-3d/
官方千人大群:59113309 135439306
YY频道-游戏开发大讲堂(完全免费,定期开课):51735288
Genesis-3D开源游戏引擎:游戏起源,皆因有我!!!