本文由D5Power首发于天地会,转载请标明原作者和出处。
周末听Sliz说Unity正式支持导出Flash了,作为一款成熟的游戏引擎,相信不少兄弟都对她很感兴趣。今天中午抽了点时间研究了一下,在这里做个笔记,算是本系列文章的一个开端。本文非100%原创,借鉴和参考了部分英文资料,在文中会有原版的连接。对于Unity3D我也是刚刚研究,文中如有纰漏之处,望各位海涵。同时欢迎各位弟兄指正!
零 下载与安装
官方网站 http://www.unity3d.com
下载地址 http://unity3d.com/unity/download/
安装好后,在开始界面里有视频介绍和文档介绍的连接。不再赘述。
一 界面
Unity3D的界面基本上如上图分布,来看一下各区域的功能。
红色:工具栏,可以通过工具栏来设置当前的鼠标功能(缩放,移动等等),进入或退出游戏运行状态
橙色:视图,即编辑/游戏演示窗口
绿色:对象列表,本窗口列举了游戏中的全部游戏对象(摄像机,灯光等等)
蓝色:游戏素材窗口,包括脚本,贴图,模型等等
紫色:属性区
小技巧:选中某对象(不管是在绿色的列表区,还是在橙色的视图区)后,把鼠标移到橙色的视图区,按下F则视图自动对准该对象
二 创建游戏对象
和我们使用FB开发一样,在开始Unity开发之前,必须要创建一个新的项目(File->New Project)。
之后,就可以进行操作了。我们来创建一个平面(Plane),一个方盒子(Cube)和一个追光(Spotlight)
创建平面:GameObject->Create Other->Plane
创建方盒子:GameObject->Create Other -> Cube
创建追光:GameObject->Create Other->Spotlight
如果你创建完成后,并没有看到他们,可以在列表中选择某对象,然后把鼠标移动到橙色视图区,按下F。如果你看到你的对象是线条,类似下面这样:
说明你的对象被遮挡住了,调整他们的位置到合适就可以了。如何调整位置?可以试用工具栏的第2个功能按钮(移动)
选择该功能后,在列表区(绿色)或视图区(橙色)选择游戏对象,均可看到3方向的箭头,拖动对应方向的箭头即可完整在该方向上的移动操作。
试着把聚光灯方在方盒子的上方,并旋转聚光灯让他对准盒子吧。类似下面这样
最后,我们希望摄像机的视野,和我们现在视图区的一致。在列表区(绿色)中选择摄像机(MainCamera),然后选择菜单GameObject->Align With View,可以发现,摄像机的预览视图中,变成了和我们现在的视图区一样的内容,当然,尺寸小点-.-
三 编程,追光跟随的,由键盘控制的盒子
在Unity中,我们试用Javascript进行程序编写,语法和AS差不多。我们先实现简单的功能,让键盘可以控制盒子移动(D5的惯例。。。哈哈),然后,让追光一直跟着盒子。
首先,我们要新建一个脚本。Asset->Create->Scrpit。这个时候,Unity自带的脚本编辑器会自动打开(MonoDevelop),我们可以看到,已经自动帮我们生成了Update函数,这个和AS的Event.ENTER_FRAME是同个概念的,即每帧都会运行。然后,我们输入以下代码:
- var speed = 5.0;
- function Update () {
- var xspeed = Input.GetAxis("Horizontal")*Time.deltaTime*speed;
- var yspeed = Input.GetAxis("Vertical")*Time.deltaTime*speed;
- transform.Translate(xspeed,0,yspeed);
- }
复制代码
speed是移动速度
Input.GetAxis("Horizontal")和InputGetAxis("Vertical")分辨是当前键盘的状态。如果按下A和D,则Horizontal返回1或-1,W和S则Vertical返回1或-1,否则都返回0。
Time.deltaTime 记录了渲染最后一帧所消耗的秒数。我们根据这个来进行位移
(这里我也没太明白,还在研究,我比较容易接受.x+=speed...)
脚本写完了,接下来就需要把这个脚本绑定到某一个游戏对象上,我们想控制盒子,自然要绑到盒子上。选择盒子,然后在菜单中选择Component-->Script,选择刚才的Scrpit文件。可以看到属性栏里,绑定成功。
现在测试一下游戏,可以发现,方盒子已经受到键盘的控制了。下面,我们要让灯光一直照向盒子,先看代码:
- var target:Transform;
- function Update () {
- transform.LookAt(target);
- }
复制代码
这里我们定义了一个target,后面再解释如何用,和刚才对盒子的操作一样,我们把这个脚本绑定到聚光灯上。
刚绑定的时候可以发现,target的值是None,因为我们还没有指定哪个对象作为target,点击None右边的箭靶一样的图标,会出现选择窗,在列表中选择Cube,target的值就被指定了。接下来,测试你的第一个“游戏”吧。
总结
相对于A3D,AWAY3D来讲,UNITY3D提供了完善的游戏开发环境。对于Flasher来讲,Javascript脚本也不会让我们过于陌生。如果Unity可以完美的导出到FP11的话,相信还是灰常强大的。本笔记不定期更新:)附件中有本次项目的源码