zoukankan      html  css  js  c++  java
  • 《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开源游戏引擎:游戏起源,皆因有我!!!

     


  • 相关阅读:
    最短路问题之Dijkstra算法
    最短路问题之Bellman-ford算法
    最小生成树之Kruskal(克鲁斯卡尔)算法
    二分图问题
    七桥问题与欧拉道路
    拓扑排序
    八连通块
    四连通检测
    USACO19DEC题解
    1206 雅礼集训D2题解
  • 原文地址:https://www.cnblogs.com/G-3D/p/3513345.html
Copyright © 2011-2022 走看看