Stealth视频教程学习笔记(第二章)

Stealth视频教程学习笔记(第二章)

本文是对Unity官方视频教程Stealth的学习笔记。在此之前,本人整理了Stealth视频的英文字幕,并放到了优酷上。本文将分别对各个视频进行学习总结,提炼出其中的知识点和思路思想。

视频地址在(http://www.youku.com/playlist_show/id_23389553.html),是一个Stealth的专辑,这里只放上本章第一个视频,其它的大家在上面的链接中慢慢看吧。

 

第二章有一个视频是FLV格式的,我没法把字幕嵌入其中,所以优酷上就没有传。

偶然发现了一个流式介绍Stealth的文章(http://blog.csdn.net/kakashi8841/article/details/39451739),大家没事可以看看。

 

PS:有需要全部24个高清视频+字幕的同学,麻烦支持一下向我捐赠100元并留下你的Email。

 

201 - Player Setup

Collider是最基本的触发物理的条件,例如碰撞检测。基本上,没有Collider物理系统基本没有意义(除了重力)。

Rigidbody是物体的基本物理属性设置,当检测碰撞完之后,就要计算物理效果,而Rigidbody就是提供计算基本参数的玩意。

如果没有Rigidbody而设置了Collider碰撞的话,那这个物体就是个死死不会动的物体。

假设有Rigidbody去撞它的话,那将会被弹开。不过,假设该脚本控制的是位移而不是物理加力的方式的话,将穿透过去。

两个没有Rigidbody的物体,也是穿透。

两个只有collider而没有rigidbody啥都不会发生,碰撞时连OnTriggerEnter等函数也不会触发。

若碰撞体设置了isTrigger属性,将取代UNITY的物理函数来运算。可以在触发函数里将其屏蔽,再次触发碰撞等效果。

当改变刚体参数的时候(例如质量等),应该在FixedUpdate函数中使用它,物理模拟以离散的时间步执行。FixedUpdate函数在每一步之前被立即调用。

 

一个移动的gameobject,如果有collider,就应该给他一个rigidbody。

 

改变一个gameobject的位置、旋转角度,有两种方式:直接改变transform.position, transform.rotation;通过力(force)来改变。

 

音频侦听器(Audio Listener)配合音频源(Audio Sources),让你可以为你的游戏创建听觉体验。当音频监听器贴在场景中的一个游戏对象,任何音频源,如果足够接近侦听器就会被获取并输出到计算机的扬声器。每个场景只能有1个音频侦听器正常工作。音频监听器没有属性。它必须被添加才能使用。它总是默认地添加到主照相机。

 

202 - Player Animator Controller

一个Animator Controller就是控制动画的意思。它可以将多个FBX文件中的动画加载进来,每个动画都是一个状态,状态之间根据下图所示的"Parameters"进行转换。这就是所谓的状态机。Animator Controller会选择处于当前状态的动画并进行显示。

 

Avatar Mask可以屏蔽掉某些部分的动画,例如,屏蔽掉人的脚、腿、上身、右手的动画,使之不受此动画影响。

 

203 - HashIDs

可以用"Base Layer.Dying"这样的字符串指定你要使用的动画,也可以用int dyingState = Animator.StringToHash()方法获取其哈希值,便于引用。这样就不会有拼写错误了。

 

204 - Player Movement

Animator.SetLayerWeight()可以指定某层动画的权重。

Mecanim的layer可以在一个角色上播放超过一个动画

较高的layer会盖过下面的layer, 不过layer 0以外的layer weight预设是0, 要set为1才会播放。例如layer 0是站立或跑走的动画,layer 1是 挥剑的动画,用body mask控制layer 1只影响上半身,脚本中要挥剑就 Animator.SetLayerWeight(1,1f);完成后Animator.SetLayerWeight(1,0f);

 

这就是上一篇设计"HashIDs"的用处。使用hash.sneakingBool就避免了拼写错误。

 

这是根据用户输入的水平(X轴)和竖直(Z轴)方向的量来让player转向的代码。Quaternion.LookRotation()可以把向量转换为旋转角度。Quaternion.Lerp()可以实现平滑地转向。Rigidbody.MoveRotation()会转向你传入的角度。

 

在这里修改动画的速度就可以提速了。Speed应该指的是每秒动画执行的次数。

状态机所在的状态会在执行动画时显示这样的进度条。

 

205 - Player Health

No news

 

posted @ 2015-01-26 00:21  BIT祝威  阅读(1876)  评论(2编辑  收藏  举报
canvas start.

canvas end.