Unity3D for iOS初级教程:Part 2/3
这篇文章还可以在这里找到 英语

Learn how to use Unity to make a simple 3D iOS game!
这篇教材是来自教程团队成员 Christine Abernathy, 他是Facebook的开发支持团队的工程师。
欢迎来到Unity3D for iOS系列教程的第二部分!
在这个系列的第一部分中,你已经学习了Unity的一些基本技能来构建一个非常简单的项目,并把它部署到iOS设备上。在继续这篇教程之前,你要确认已阅读过第一部分。
现在进入第二部分,你要添加一些功能来增强我们的项目,这些功能包括更好的角色移动,和更好的游戏背景。你也会学习如何使用Unity Remote来调试。
游戏再次开启!
让我们开始:改变背景
打开你在教程第一部分的Unity项目。如果你还没有准备好,这里是下载的链接: Unity Project, Xcode Project.
在教程的这个部分,你要在一个新的场景里做修改,所以你可以容易的打开老的那个来参考,如果你喜欢。
选择FileSave Scene as…,并命名你的新场景为Level_2. 这个新的Level_2场景会添加到项目视图中。
所有你在前一个场景中用到的资源,例如,脚本,在你新的场景中都可以使用。你可以改变Level_2场景中的GameObject,而不影响Level_1中同样的物件。
好好地享受吧
首先你要增强角色的机动性。目前你那个英勇的小方块只是会向前和向右旋转。那种移动不是非常平滑和有趣的。
Character Controller是一个你可以连接到GameObject的Unity组件,它帮助你创建更加逼真的运动。你可以通过脚本函数来控制Character Controller.
举例来说,你可以调用一个预先定义的SimpleMove函数来移动角色。这个SimpleMove函数用一个Vector3作为输入,来表示作用于移动的速度。角色的移动会根据重力自动计算,这样允许它爬坡和上下楼梯。
角色也会绕过任何障碍物,它会找出它的路径,而不需要你写代码来关注这点。
来看看这究竟是啥意思,在Hierarchy视图中选择这个方块GameObject(你的角色),然后选择“ComponentPhysicsCharacter Controller.”你会看见一个对话框让你确认是否用Character Controller来替代Box Collider
点击”Replace”
在Inspector中你会看到一个针对Charactor COntroller的新组件。你将要创建一个全新的脚本来控制玩家的移动,所以你不再需要在这个场景中绑定MoveSimple脚本到你英勇的小方块上。
在Inspector中,点击MoveSimple脚本右上角的齿轮图标,然后选择删除组件。这个脚本就不会在Inspector中出现了。
选择AssetsCreateJavaScript创建一个新的Javacript资源,然后命名它为MoveAround. 双击这个新的脚本,在MonoDevelop中打开它。删除自动生成的函数,然后添加下面的代码:
var speed : float = 3.0; |
保存你的修改。
在这个脚本中的最后一行指定这个脚本只能连接到有Character Controller组件的的GameObject上。
这个Update()函数获取一个Character Controller组件的句柄。根据代表左右移动的输入,让它围绕y轴做旋转变换。缺省情况下,左右移动由左右箭头和A/D键来控制的。
Input.GetAxis()的值范围是-1到+1. 围绕着y轴,负值会产生一个逆时针旋转,正值产生一个顺时针的旋转。
SimpleMove函数根据从Input.GetAxis(“Vertical”)获取的输入让角色来朝前或朝后移动。这个输入由前后箭头或W/S键来触发。与水平输入一样,the Input.GetAxis()的值范围从-1到+1,负值和正值分别代表向后和向前移动。你使用一个速度因子来控制旋转角度和移动的距离。
关联新的脚本到英勇的小方块上。现在你知道该如何做了。(提示:如果你不记得了,这是ComponentsScriptsMove Around.:])当你完成后,在角色的Inspector中,你应该看到一个新的Move Around脚本组件。
为啥不用the Unity Editor试试旋转你的英勇的小方块呢?点击Play按钮,然后体验你新创建的移动效果 – 哦,体验一下可以左右旋转,前后移动的快乐。
使用left/right/up/down按键四处转转,然后也测试一下W/A/S/D键。玩家现在移动的更加顺畅了,感谢the Character Controller组件和你编写脚本的基因。
继续之前,拍拍背休息一下吧. :]
用Unity Remote调试
在上个教程中,你也许注意到,在你的iOS设备上测试你的项目有一点麻烦。导出到Xcode项目,构建和在你的设备上运行的整个过程要花费一些时间,这些时间实际的增加到了开发过程中。
好的消息是,这里有一个更好的方式!最快的方式来在iOS上调试你的游戏是使用一个叫做 Unity Remote的应用。这让你跳过为你的iOS构建项目,启动xcode然后部署在你的设备上的这些步骤,
使用Unity Remote iOS应用,你可以链接你的iOS到Unity Editor,然后从iOS设备来控制你的Unity Editor。这点可以让你快速的在Unity Editor中调试你的游戏。
Unity Remote可以通过 AppStore免费获取到。下载,然后安装这个应用在你的设备上。
注意:要使用UnityRemote,需要你的iOS设备和你的电脑应该在同一个Wi-Fi网络中。另外,要让这种方式能够运作,Unity Editor窗口必须在前台。如果你吧Unity Editor的窗口放到后台,在iOS应用中,你会得到“Waiting for game view. Press ‘Play’”的消息。
点击Unity Editor中的Play。在你的iOS设备上,运行Unity Remote应用。从出现的列表中,选择你的电脑。如果你的电脑没有在列表中,试着在Unity Remote的IP设置中输入你电脑的IP地址。
当Unity Remote已经与你的电脑配对,你的iOS设备应该可以控制在Unity Editor中运行的游戏。在设备上显示的分辨率不会很理想,但是这是最好的方法来快速展示你的游戏。但是,你应该也要偶尔为iOS构建项目,从xcode加载这个游戏,这样你才可以在更实际的条件之下准确的测试游戏的物理效果。
在iOS上测试这个游戏。你会发现在你的设备上没有办法移动你的玩家,这是因为你的left/right/up/down按键在iOS上不存在(虽然你仍然可以在你的mac上控制它)。下面,你将要实现一个摇杆功能来修正这点。
双倍的摇杆,双倍的快乐
对你来说幸运的是,Unity的标准的资源库中包括了实现摇杆功能的资源。选择AssetsImport PackageStandard Assets (Mobile)从包里导入相关的条目(如下面所看见的)。
选择与与摇杆功能相关的指定项目。点击 Import。当导入过程结束,项目面板会包含一个名叫 Standard Assets(Mobile)的新的文件夹。在Unity4中,你可以看到导入的摇杆的脚本带着一个警告,就像这个样子(底部黄色的部分)
要解决这个问题,在警告上双击。这会打开摇杆的脚本文件。把你的光标放在带有警告的那行:
gameObject.active = false; |
修改这条语句为:
gameObject.SetActive(false); |
现在当你切换到Unity Editor时,这条警告应该不存在了。了解了!
首先添加双摇杆预制件到你的场景中。预制件是一个可复用的,并且通常是需要被定製的GameObject。你可以从项目面板中将它拖出,给你的场景添加一个预制件,或者通过脚本以编程的方式添加。举例来说,你何以构造一个预制件代表一个角色,然后以编程的方式添加多个角色到一个场景中。
在你的项目面板中,打开Standard Assets (Mobile)Prefabs文件夹。将the Dual Joysticks prefab拖到你的Hierarchy视图中。
点击Game视图,到游戏视图下,你可以看见这个摇杆:
回到场景视图
点击在Hierarchy视图的Dual Joysticks GameObject边上的三角。注意Dual Joysticks GameObject实际上有两个子GameObject组成。
这个过程叫做父子化,是用来建立摇杆父子GameObject关系的。父子化是非常有用的,你可以创建一个复合的GameObject,这个复合的GameObject包含其他GameObject. 举例来说,你可以让左右摇杆在同一时间有效或失效,而且如果他们可以被视作一个简单的物件,通过脚本来完成这步就会相当容易。
选择LeftJoystick GameObject,注意有一个Joystick script组件关联在它上面。选择the RightJoystick GameObject,查看是否一样。
Joystick script探测附着在它上面的GUI纹理上的触摸事件,在特定的约束下来获取定位。举例来说,图形只在给定的范围内移动。这个脚本也归一化位置的输出,让它在-1到+1之间。这让你可以在iOS环境下使用摇杆来作为Input.GetAxis()的替代。
到这步,你已近在场景中放置了两个摇杆,但是它们还没有连接到你的英勇的小方块上来驱动输入。你将要改变脚本来分配右摇杆旋转角色的任务,而左摇杆来前后移动你的角色。
修改MoveAround脚本来处理摇杆输入。打开脚本来编辑和添加公共变量代表移动和旋转摇杆(在其他变量的上面):
var moveJoystick : Joystick; |
然后添加一个新的函数来查看摇杆的位置,然后返回-1到+1之间的输出。就在Upate()函数后面添加。
function joyStickInput (joystick : Joystick) { |
摇杆的输入是一个Vector2,有x和y分量。你使用x或y的绝对值中较大的那个作为输出。你使用摇杆的方向作为乘数来表示一个负值或正值。输出值的结果在-1到+1之间。
修改Update()函数来处理来之Unity编辑器或一个iOS设备的输入:
function Update () { |
这个变换的Rotate()函数从左/右键(或A/D)键或旋转摇杆的输入获取输入。角色控制器的SimpleMove函数从上/下箭头(或W/S)键或者左摇杆的输入来得到输入。
保存你脚本的修改。选择角色GameObject(这个方块),然后注意MoveAround脚本组件有两个针对移动摇杆和旋转摇杆的新的公共变量。
这些变量当前还没有被赋值。保持角色GameObject仍然被选中,拖动左摇杆GameObject到移动摇杆变量上。拖动右摇杆GameObject到旋转摇杆变量上.(或者替代拖动,你可以使用每个变量边上的选择器,如之前指出的那样)
点击Unity编辑器中的Player。在你的iOS设备上开启Unity Remote。
测试摇杆的功能,然后确认你可以使用左摇杆前后移动,使用右摇杆来左右旋转。当你在你的iOS设备上移动摇杆的时候,你可以在Unity编辑器中看到摇杆在移动。
注意:你在这里看到的摇杆的图片也许被拉伸了。不要担心,在实际的设备上它们不会像这样显示的。
一个晴朗的天空
现在你已近改进了你的英勇的小方块的移动效果,那么来改善背景如何?到目前为止,角色都在一个沉闷和灰暗的世界中,是时候美化一下了.:]
谢天谢地,这是非常简单的。Unity在标准的资源包中包含了这个让你可以创建天空的资源,添加植被和不同高度的地形。
在这节中,你要用skybox组件添加一个天空。skybox是一个很大的方块对象,添加到你游戏的主摄像头上。当你添加了这个组件,你可以通过添加覆盖在方块上的材料,给这个方块穿上衣服,并被渲染来创建一个天空的效果。
选择AssetsImport PackageSkyboxes来开始导入过程。选择Sunny2 Skybox.mat,然后点击导入。
当导入完成,你的Project视图应该有一个新的Standard AssetsSkyboxes文件夹包括一个新的导入的资源。
选择主摄像头对象,然后选择ComponentRenderingSkybox
这个新的组件在Inspector中出现了。注意它有一个变量来代表材质。这里是你之前导入的skybox材料发挥作用的地方了。
点击这个客制化的Skybox变量边上的小圆圈图标。一个选择材质的对话框会弹出来,列出你项目所有可以使用的材质。
点击Sunny2 Skybox材质,然后关闭选择材质对话框。这个客制化的Skybox变量现在应该有一个Sunny2 Skybox材质付给它了。
你的场景将奇迹般的改变了,显示你刚才添加的晴朗天空,你可以点击Game栏目来在Game视图中显示天空,或者点击Play按钮。
太阳出来的!尽管它看上去阴沉沉的,这会鼓励你来给你的世界添加一些绿色的生命。
不要忘记添加绿色
切换回场景视图。你可以通过添加一个地形GameObject创建植被,然后添加一些材质(例如,草地)和一些对象(例如,树)。
你不再需要平面(plane)GameObject,而terrain(地形)会取代地面的职责。在Hierarchy视图中右击plane GameObject,然后选择Delete.
选择AssetsImport PackageTerrain Assets.
点击Import来导入所有选中的内容。地形资源应该出现在你的标准资源文件夹下。你可以使用这个已导入的资源来改变地形GameObject的行为。
选择TerrainCreate Terrain来添加一个地形GameObject到你的场景中。选择地形对象,然后使用Inspector改变它的位置到-1000,0,-1000。这步将地形拉伸了到足够大,给你的角色有足够的空间来移动。
地形(脚本)栏包括让你来装点你的地形的工具:
选择绘画工具带来你可以工作的刷子:
你将要用grass来绘制你的地形。点击Edit TexturesAdd Texture:
在Add Terrain Texture对话框中,在Texture区域点击Select,选中Grass (Hill) texture,关闭Select Texture2D弹出窗口,然后点击Add:
在你的场景视图中点击来绘制草地。要检查你的创作结果,点击Game栏目:
美化总是这么容易吧!
切换回场景视图 – 现在你将要绘制一些棕榈树!在地形(脚本)栏,选择Place Trees工具:
点击Edit TreesAdd Tree:
在Add Tree对话框中,点击Tree输入框边上的圆靶图标,选择棕榈树Game Object,然后点击Add:
设置 Brush Size为20:
通过点击你想要添加树木的地方来开始添加树到你的场景中。提示:当你放置树木的时候,放大场景然后移动场景。当你添加树木的时候,试图调整点光源的范围和高度来看见更多的场景。
结束后,你的场景应该看上去像这个样子:
Wow,相当不错!它开始看上去像一个真实的世界在那里。但是你的地形仍然看上有点平,不是吗?
你可以很容易的添加一些高度变化到你的地形中。在地形(脚本)栏,选择最左面的工具来提升和降低地形的高度:
设置Brush Size为20,然后在场景的试图中,点击玩家周围的2~3个点(不要太靠近,)来改变地形的高度。
预览这个游戏,并在场景中四处走走。在场景中微调树木的数量,直到看上去合适,但是记住在你想要保留任何改变前,停止游戏。
保存你的场景
用Unity Remote来测试你的项目,直到满意为止,在Xcode项目中构建它。选择FileBuild Settings,然后在 Build Settings对话框中,点击Add Current来添加Level_2场景。这个在场景中的新的场景会出现在构建清单中。不要选中Level_1场景,只要构建Level_2.
如果被问起点击Build,选择替换前面的项目,然后加载Xcode项目。在你的iOS设备上部署和测试。
不错吧,嗯?想象这会需要多久时间完成这些,如果你还在使用OpenGL :]
向哪里进发?
干的不错!你在拓展你的Unity技能上向前迈了一大步.:] 你的英勇的小方块也将会更加接近终点线。
这里有一些从项目开始到目前为止的所有的代码下载: Unity Project, Xcode Project.
在这份教程的最后部分,你将要在项目上添加游戏元素。通过添加玩家期待的钟声和口哨来给你的游戏增色。
你是多么喜欢Unity了吧?我们期待在论坛中听到你的分享的经验!
这篇教材是来自教程团队成员 Christine Abernathy, 他是Facebook的开发支持团队的工程师。
Unity3D for iOS初级教程:Part 2/3的更多相关文章
- Unity3D for iOS初级教程:Part 3/3
转自Unity 3D for iOS 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这份教程是由教程团队成员 ...
- Unity3D for iOS初级教程:Part 3/3(上)
转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111738.html 欢迎来到第三部分,这是Unity 3D for iOS初级系列教程 ...
- Unity3D for iOS初级教程:Part 1/3
转自Unity 3d for ios 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成 ...
- Unity3D for iOS初级教程:Part 3/3(下)
转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111739.html 消息不会自动消除 你基本的游戏功能已经完成了,但是显示一些关于游戏 ...
- Unity3D for iOS初级教程:Part 1/3(下)
转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111735.html 一个手指来统治他们 但是等等,你还没有完全完成! 如果你玩游戏有一 ...
- Unity3D for iOS初级教程:Part 1/3(上)
转自:http://www.cnblogs.com/alongu3d/archive/ 如果图片看不到,请查看原文 这篇教材是来自教程团队成员 Christine Abernathy, 他是Faceb ...
- Unity3D新手入门初级教程
根据游戏调查公司 Newzoo 针对全球手机游戏市场所做的调查报告显示,2016年全球游戏市场规模将达到 996 亿美元,其中手机游戏市场将以 21.3% 的增幅获得约 369 亿美元的收入,而中国手 ...
- 新手必看,史上最全的iOS开发教程集锦,没有之一!
最近大火的iPhone XS Max和iPhone XS,不知道有没有同学已经下手了呢?一万三的价位确实让很多人望而却步啊.据说为了赢得中国的用户,专门出了双卡双待的,可想而知中国市场这块“肥肉”人人 ...
- [[iso教程]] 《4个月ios实体教程》全网最新、最全ios视频教程
全网最新.最全ios视频教程 内容简介 <ios实体教程>主要介绍如何使用iOS提供的强大工具集创建iOS应用.全视频对iOS操作系统做了全面的介绍,首先讲解如何构建应用程序的用户界面,涵 ...
随机推荐
- Azure 项目构建 - 用 Azure 认知服务在微信公众号上搭建智能会务系统
通过完整流程详细介绍了如何在Azure平台上快速搭建基于微信公众号的智慧云会务管理系统. 此系列的全部课程 https://school.azure.cn/curriculums/11 立即访问htt ...
- java25个Java机器学习工具&库
本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...
- Android学习总结(四)—— Activity和 Service进行通信
一.Activity 和 Service进行通信的基本概念 前面我们学习我生命周期里面包含了启动和停止服务的方法,虽然服务器在活动里启动,但在启动了服务之后,活动与服务基本就没有什么关系了.我们在活动 ...
- LINUX提高openfire并发数(网上收集)
谷歌博客地址:http://tsaiquinn.blogspot.com/2014/10/linuxopenfire.html 影响连接数的元素包含三种:1)Linux的系统参数2)进程自身可以创建的 ...
- 如何计算支撑向量数(SVs)
申明:转载请注明出处. 支持向量机(SVM)是一个成熟的单分类器,常常用于对比实验中.往往需要统计支持向量数量来比较算法优劣,MATLAB有自带的SVM工具箱,用法如下: [train, test] ...
- COGS 1710. [POJ2406]字符串的幂
★☆ 输入文件:powerstrings.in 输出文件:powerstrings.out 简单对比时间限制:3 s 内存限制:256 MB [题目描述] 对于给定的两个字符串a,b, ...
- 添加 SSH 公钥
生成 SSH 密钥 ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" 获取 SSH 公钥信息 cat ~/.ssh/id_rsa.pu ...
- 高精度A+B
#include<stdio.h> #include<string.h> int main() { int lenth1,lenth2,n,i,j,k,s; scanf(&qu ...
- 在行列都排好序的矩阵中找数 【题目】 给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一 列都是排好序的。实现一个函数,判断K 是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4 4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返 回false。 【要求】 时间复杂度为O(N+M),额外空间复杂度为O(1)。
从对角考虑 package my_basic.class_3; /** * 从对角开始 */ public class Code_09_FindNumInSortedMatrix { public s ...
- shell脚本,计算从0+2+4+6+....100的结果是多少?
[root@localhost wyb]# cat evenjia.sh #!/bin/bash #从0++++...100的结果 i= ` do sum=$(($sum+i)) i=$(($i+)) ...