《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇04:如何实现触控操作》

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开源游戏引擎:游戏起源,皆因有我!!!

 


 

posted @ 2014-01-10 11:08  Genesis-3D  阅读(743)  评论(0编辑  收藏  举报