零基础Unity学习笔记@IT·互联网首页投稿(暂停使用,暂停投稿)

Unity入门 - Roll the Ball!

2016-07-06  本文已影响599人  pirateH

// Unity学习笔记,自己会记录一些学习中遇到的问题,可以给自己看也可以给需要的人看,希望能帮助掉在同样坑里的小伙伴们

// 初学者,没太多编程基础,所以难免可能会有写错的地方,请见谅

Let's go!

昨天正式开始学习Unity,直接去官网看的教学视频。

第一个视频是Roll-a-ball tutorial

http://unity3d.com/cn/learn/tutorials/projects/roll-ball-tutorial

第一步 让球动起来

到第3课照着弄完,球就是不动。。。

后来发现是视频里script不适用于最新版本的unity,修改了script之后(加入了speed),球会动了,但总是往下掉。。

原来是sphere collider不知道什么时候被我给勾掉了,勾上之后就不会掉了!

还剩一个问题是 点击上下左右后,球会延迟很久才动,到unity的forum上找到了解决办法:

To do this, use the play buttons at the top of the editor:

First put the editor in pause mode:

Then enter playmode: (大约是变蓝色说明加载好了)

... and this way, you'll be in paused play-mode. Let the editor fully load and start the scene, then uncheck pause and play the game:

The ball should move immediately.

搞定!

 2016/07/05


第二步 让镜头跟随球移动

直接将camera丢到球下面,camera也会跟着球一起动,但是当球滚动时,camera也滚动了,所以改为使用script的控制camera跟随。

这次的script比较简单,一次成功~

学到了两个东西

1. fixupdate、update和lateupdate

这篇文章介绍的很清楚:http://bbs.9ria.com/thread-417976-1-1.html

简单说

fixupdate “在固定的时间间隔执行,不受游戏帧率的影响”; “FixedUpdate是真实时间,所以处理物理逻辑的时候要把代码放在FixedUpdate而不是Update.”

LateUpdate是在所有Update函数调用后被调用

是在所有script里的update之后:update update update …… lateupdate

在控制镜头跟随时,要让球动完,镜头再动,所以使用lateupdate(感觉在这个例子中看不大出来差别)。

2. public与private

不算完全懂吧,但是知道了一点

public定义的变量 会在inspector中可编辑

private定义的变量 只能在script中设定

第三步 制作游戏场景

这一段就很顺利了,加cube做墙,加cube做pickup,通过写script(transform.rotate)让pickup自旋起来。

记几个关键点吧:

1. rotate时,为了不受设备帧率的影响,使用Time.deltatime来抵消帧率差异

transform.rotate (new Vector3(x,y,z) * Time.deltatime )

2. 游戏中反复使用的物品可使用perfab制作模板

3. 通过Local和Global切换坐标系

2016/07/06


续:

通过脚本实现pickup可被球给pick up:

进入球的脚本

onTriggerEnter 探测球和其他物体的碰撞

给pickup加上tag,通过compareTag检测碰撞对象是否为pickup

如果是,使用setActive(false)让该pickup消失

把pickup设为trigger(否则onTriggerEnter不会生效)

pickup的性能优化:

- 通过给pickup加上rigidbody让unity知道它是dynamic的,不是static的,这样就不会每次pickup一转动就从新计算所有的static物体

- kinematic的使用:把pickup的rigidbody设为kinematic,kinematic不受物理力的作用(包括重力),但可以通过transform进行各种变化

今天是7月7日,看不到尽头的黑色天空,眼里的很多汗吃回到了嘴里。感谢unity让我能到另一个世界。


第四步 游戏分数计算与获胜提示

这一段也很顺利

在球的script中,新建变量count记录pick up到的pickup的数量

场景中新建文本UI(countText)显示count

设定countText的显示规则

场景中将countText拖到球的count text空栏中,完成指向

类似方法,创建winText吃掉所有pickup后显示

学到几点:

使用ui,要在抬头加 using Unity.Engine.UI

.text设定文本内容,.ToString数字转化为文本

避免重复可自制函数

@.@ Roll the ball 就做好啦! @*-*@

2016/07/08

上一篇下一篇

猜你喜欢

热点阅读