转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111735.html

一个手指来统治他们

但是等等,你还没有完全完成!

如果你玩游戏有一会,你会注意到有些奇怪的事情。你可以通过一个手指来移动方块,但是当你用两个手指离开它相同的距离方块也可以被移动。这是什么回事呢?

从你的MoveSimple脚本中回忆起这行:

var ray : Ray = Camera.main.ScreenPointToRay
(Input.mousePosition);

它创建了一条从摄像头到触摸点的射线。触摸点用Input.mousePosition来表示。当你在iOS设备上运行的时候,Input.mousePosition是作为所有当前触摸点平均位置来计算的。放置你的手指,若平均值落在角色上,就会让角色移动!

你应该修正这点来避免困扰用户。你可以使用Unity中可以使用的触摸相关函数来监测触摸事件,并且找到一个更加精确的触摸位置。

打开你的MoveSimple脚本。在文件的最上面(其他变量所在的位置)添加一个标志,来指示你可以使用触摸输入:

private var isTouchDevice : boolean = false;

你这样做了后,你就可以测试运行在iOS和Unity编辑器上。如果你只打算在iOS上测试,那么你可以跳过触摸检查的逻辑,然后简单的使用触摸相关的函数。

下一步添加一个Awake()函数,来完成一个运行时的检查,探知游戏是否运行在一个iOS环境下。这个Awake()函数仅仅被调用一次,就是当游戏加载的时候:

function Awake() {
if (Application.platform == RuntimePlatform.IPhonePlayer)
isTouchDevice = true;
else
isTouchDevice = false;
}

Application.platform返回游戏正在运行的平台。RuntimePlatform.IPhonePlayer指示游戏正运行在iOS上。

最后,根据下面修改你的Update()函数来处理触摸输入:

function Update () {

    var clickDetected : boolean;
var touchPosition : Vector3; // Detect click and calculate touch position
if (isTouchDevice) {
clickDetected = (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began);
touchPosition = Input.GetTouch(0).position;
} else {
clickDetected = (Input.GetMouseButtonDown(0));
touchPosition = Input.mousePosition;
} // Detect clicks
if (clickDetected) {
// Check if the GameObject is clicked by casting a
// Ray from the main camera to the touched position.
var ray : Ray = Camera.main.ScreenPointToRay
(touchPosition);
var hit : RaycastHit;
...

保存你的修改。

你正在使用两个新的变量,clickDetected和touchPosition,来监测点击和保存点击的位置。如果在iOS上运行,你通过检查触摸是在开始状态来判断点击。然后根据首个触摸来计算点击的位置。如果你没有运行在iOS上,逻辑和之前的一样。

在重新构建项目之前,关闭Xcode项目。现在重新在Unity中的Build Settings对话框里构建。如果出现带有一个关于构建的文件夹已经存在的警告,选择Replace.

当Xcode项目构建完成,打开它,然后在你的iOS设备上运行。核对你可以移动英勇的小方块,而且让你用两个手指移动它的错误已经消失了。

向哪里进发?

恭喜你已经完成学习用Unity开发的基础部分,和如何部署到iOS上!这里有一些从项目开始到目前为止的所有的代码下载: Unity ProjectXcode Project.

这份教程的下个部分,通过增强英勇的小方块的移动和改善场景,你会构建这个非常简单的游戏。你也会做一些调试的工作!

在此期间,如果你有任何关于到目前位置你所做的问题或建议,请跳转到论坛中的相关会话中!

Unity3D for iOS初级教程:Part 1/3(下)的更多相关文章

  1. Unity3D for iOS初级教程:Part 2/3

    转自Unity3D for iOS 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成员 ...

  2. Unity3D for iOS初级教程:Part 3/3

    转自Unity 3D for iOS 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这份教程是由教程团队成员 ...

  3. Unity3D for iOS初级教程:Part 3/3(上)

    转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111738.html 欢迎来到第三部分,这是Unity 3D for iOS初级系列教程 ...

  4. Unity3D for iOS初级教程:Part 1/3

    转自Unity 3d for ios 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成 ...

  5. Unity3D for iOS初级教程:Part 3/3(下)

    转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111739.html 消息不会自动消除 你基本的游戏功能已经完成了,但是显示一些关于游戏 ...

  6. Unity3D for iOS初级教程:Part 1/3(上)

    转自:http://www.cnblogs.com/alongu3d/archive/ 如果图片看不到,请查看原文 这篇教材是来自教程团队成员 Christine Abernathy, 他是Faceb ...

  7. Unity3D新手入门初级教程

    根据游戏调查公司 Newzoo 针对全球手机游戏市场所做的调查报告显示,2016年全球游戏市场规模将达到 996 亿美元,其中手机游戏市场将以 21.3% 的增幅获得约 369 亿美元的收入,而中国手 ...

  8. 新手必看,史上最全的iOS开发教程集锦,没有之一!

    最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...

  9. [[iso教程]] 《4个月ios实体教程》全网最新、最全ios视频教程

    全网最新.最全ios视频教程 内容简介 <ios实体教程>主要介绍如何使用iOS提供的强大工具集创建iOS应用.全视频对iOS操作系统做了全面的介绍,首先讲解如何构建应用程序的用户界面,涵 ...

随机推荐

  1. Hybrid App: 了解JavaScript如何与Native实现混合开发

    一.简介 Hybrid Development混合开发是目前移动端开发异常火热的新兴技术,它能够实现跨平台开发,极大地节约了人力和资源成本.跨平台开发催生了很多新的开源框架,就目前而言,在混合开发中比 ...

  2. 关于Struts.xml的路径配置以及对应的连接路径问题

    主要记住一点!: 1.   namespace的路径配置例如:/x:   2.  name名自由配置(主要用来是做action跳转方法用的) 3.  form表单中提交action时以这个格式提交(此 ...

  3. hexo搭建简易的博客网站

    0.环境检测 1.系统升级(图形更新) #update-manager 检测状态 2.检测升级(命令更新) #sudo apt update #sudo apt -y dist-upgrade 一.安 ...

  4. 【Swift】UNNotificationServiceExtension

    一.简介 An object that modifies the content of a remote notification before it's delivered to the user. ...

  5. AI的真实感

    目录 1.让AI"不完美"--估算和假设 2 AI感知 全能感知 特定感觉无知 3 AI的个性 4 AI的预判 5 AI的智能等级 ​ AI的真实感一直是游戏AI程序员追求的目标, ...

  6. Ios第三方FMDB使用说明

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dyli ...

  7. LoadRunner具体流程

    创建负载测试场景场景目标:模拟10个用户同时登陆.搜索航班.购买机票.查看航班路线并退出打开Controller并创建一个新场景1.打开HP LoadRunner2.打开Controller在Load ...

  8. ArcGIS API For Javascript :如何制作地图切换器

    大部分情况下我们开发会使用原生的地图切换器,由于每个项目的页面风格不同,业务场景不同,因此需要做一些样式不同的地图切换器. 首先可以照猫画虎,自己照着地图切换器的样式抄一个,或者看看主流的地图切换器都 ...

  9. 力扣(LeetCode)缺失数字 个人题解

    给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数. 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2 ...

  10. VLAN实验(3)

    1.选择2台S3700和5台pc机,并根据实验编址完成此拓扑图. 2.启动设备,检查设备的连通性: 由于现在我们还没有划分VLAN,这5台PC,还在同一个VLAN中,现在我们启动所有的设备,这是所有的 ...