坐标转换,这次是反过来,屏幕坐标转换成世界坐标

摘要:
今天是Android屏幕滑动交互的时候了。我发现原来的Android屏幕坐标是屏幕坐标,屏幕左下角为0,屏幕右上角为1920*1080,以像素为单位。所以每个手机都是不同的,所以如果你用这个坐标来判断是左手滑屏还是右手滑屏,就会产生问题。

今天是做 安卓屏幕滑动交互的时候,发现原来安卓屏幕的坐标是屏幕坐标 

坐标为 屏幕左下角0,0  右上角  1920*1080  是以像素为单位的。

那么每个手机都不一样 所以如果以这个坐标来判断是左手滑动屏幕还是右手滑动屏幕会产生问题。

而我这款游戏 摄像机是不动的  摄像机一直对着前方 摄像机的中心就是世界坐标的圆心 , 那么 我把屏幕坐标换成世界坐标就可以很方便的判断手指滑动的位置了

所以就用到了 屏幕坐标转换到 世界坐标

做下笔记 怕以后忘了

 1         #region 触摸屏控制  上下 射箭  移动设备
 2 
 3 
 4 
 5 
 6         if (Input.touchCount > 0)
 7         {
 8 
 9             for (int i = 0; i < Input.touchCount; i++)
10             {
11 
12                 if (
13                     Input.GetTouch(i).phase == TouchPhase.Began &&
14                     m_camera.GetComponent<Camera>().ScreenToWorldPoint(Input.GetTouch(i).position).x > 0f &&
15                     jian_max > 0
16                     )//测试 只有da于零才攻击
17                 {
18                     //debug.text = m_camera.GetComponent<Camera>().ScreenToWorldPoint(Input.GetTouch(i).position).ToString();
19                     Instantiate(jian,
20                      new Vector3(PlayerTran.position.x, PlayerTran.position.y - 0.2f, PlayerTran.position.z)
21                                 ,
22                                    Quaternion.identity);
23                     jian_max--;
24                 }
25 
26                 else if (m_camera.GetComponent<Camera>().ScreenToWorldPoint(Input.GetTouch(i).position).x < 0f &&
27                     Input.GetTouch(i).phase == TouchPhase.Moved)
28                 {
29 
30                     //这里做移动 两种方案  手速移动和定速移动
31 
32                     //这是手速移动
33                     //Vector3 word_touchPO = m_camera.GetComponent<Camera>().ScreenToWorldPoint(Input.GetTouch(i).position);
34                     //debug.text = word_touchPO.ToString();
35 
36                     //player_che.transform.position = Vector3.MoveTowards(player_che.transform.position,
37                     //    new Vector3(player_che.transform.position.x
38                     //    , word_touchPO.y,
39                     //    0f), 0.5f);
40 
41                     //下面是定速移动
42                     //Input.GetTouch(i).
43 
44                     //debug.text = Input.GetTouch(i).deltaPosition.ToString();
45                     if(Input.GetTouch(i).deltaPosition.y<0)
46                     {
47                         左手指状态 = -1;
48                     }
49                     else if(Input.GetTouch(i).deltaPosition.y>0)
50                     {
51                         左手指状态 = 1;
52                     }
53                     
54                 }
55                 else if(m_camera.GetComponent<Camera>().ScreenToWorldPoint(Input.GetTouch(i).position).x < 0f &&
56                     Input.GetTouch(i).phase == TouchPhase.Ended
57                     )
58                 {
59                     左手指状态 = 0;
60                 }
61             }
62         }
63         
64 
65         //这部分也是定速移动的一部分
66         if(左手指状态<0&&
67              player_che.transform.position.y > -2.92f)
68         {
69             player_che.transform.position = new Vector3(player_che.transform.position.x
70                 , player_che.transform.position.y-4f*Time.deltaTime,
71                 0f);
72 
73         }
74         else if (左手指状态 > 0&&
75             player_che.transform.position.y < 1.88f)
76         {
77             player_che.transform.position = new Vector3(player_che.transform.position.x
78                 , player_che.transform.position.y + 4f * Time.deltaTime,
79                 0f);
80 
81         }
82 
83         //定速移动完结
84 
85 
86 
87         #endregion

免责声明:文章转载自《坐标转换,这次是反过来,屏幕坐标转换成世界坐标》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IE8+兼容经验小结eclipse中src以文件夹形式展示,没有以package包形式展示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安卓自动化单元测试——登录模块测试

安卓自动化测试 参考资料:Android自动化测试-从入门到入门 构建之法上说单元测试要集成到自动化框架中,要和产品代码一起保存和维护,不是很明白自动化框架是什么。 1.测试准备 build.gradle配置 android { defaultConfig { testInstrumentationRunner "and...

设置安卓开机动画、开机logo

我们要修改的是system>media文件夹下的bootanimation.zip(手机开机动画)这个文件先来讲讲这个文件结构:该zip解压后得到两个文件,第一个目录存放了开机时播放的图片(图为佳域G3原厂的动绘图片包),见下图:图片编号001,002,.......010这些是用来控制图片播放顺序的。第二个 desc. txt的文本文档存放的数据...

&amp;lt;Android基础&amp;gt;(一)

第一章Android 2003年10月,Andy Rubin等人创办了Android公司。2005年8月谷歌收购。 1.1 Android全貌 1.1.1 Android系统架构 1.Linux内核层:为Android设备的各种硬件提供底层驱动。如:显示驱动,音频驱动,蓝牙驱动,WiFi驱动,电源管理。 2.系统运行库层:c/c++库为Android层提供...

想让安卓 APP 如丝般顺滑?

随着安卓手机市场占有率的节节攀升,随便在大街上找几个人估计 80% 用的都是安卓手机吧!用安卓手机的人这么多,不知道大家是否曾经感觉到过 APP 卡顿、死机?是否遇到应用程序无响应、闪退?本文就为大家解释一下其中的原因,如何通过帧数来监测 APP 流畅度及解决此问题。 为何 APP 会运行缓慢 学过计算机的人都知道, APP 运行在操作系统上,操作系统依赖...

Media Player Classic(guliverkli)源代码的下载与编译

Media Player Classic(guliverkli)是由匈牙利人Gabest开发,基于源代码开放协议(GPL:GNU通用公共许可证)的软件,暴风影音等不少播放器都是在它的基础上做出来的,在sourceforge.net上的项目叫做guliverkli,地址是:http://sourceforge.net/projects/guliverkli/...

超简单,安卓模拟器手动root

本文转载自:http://quantoubao.blog.163.com/blog/static/2083211702013870501987/ 安装Android SDK安卓模拟器的方法很简单,网上大把,傻瓜式的。不过对其root的方法,网上的版本就不那么好使了。网上的方法从方向性来说是没错的,就是细节没给讲清楚,或者讲错,或者没提到这样root方式对高...