您的位置:首页 > 移动开发 > Unity3D

Unity蛮牛教程噩梦射手----代码讲解(1)

2015-04-10 22:08 176 查看
       很久没有写博客了,因为最近开始学习Unity。在蛮牛教育网上有一套讲解Unity官方教程的视频-------噩梦射手游戏实例,网站为http://www.unitytrain.cn/course/40,是Logic3d老师讲解的。游戏本身并不是很复杂,跟着视频来学习的话困难不打。然而作为程序员来学习这一套视频,更加关注的是这个游戏的脚本部分。也看到有评论说对代码部分老师讲解并不是很深入,所以我打算开这样一个新坑--------对该套视频部分的脚本代码进行讲解。好,那废话不多说,我们进入正题。

 

       视频第一课出现的是游戏主角Player的移动脚本,我先上代码






 

      代码开头定义的变量我们先跳开,来关注特殊的函数

  FixedUpdate()函数



 所以我们在这个函数里面加入我们对键盘移动输入信号的响应事件。  通过GetAxisRaw()来获取到当前用户的输入,在通过Move(),Turning(),Animating()函数来逐个改变Player的位置Position,旋转,动画状态Animation。我们来一一解释。

 

Move()函数:

直接使用Vector3 movement来记录当前的水平垂直方向的位移值,乘上速度和单位时间,最后赋予Player新的Position实现位置移动。这段代码不难理解。

注意:这里使用刚体RigidBody来实现位置的转变。直接使用transfrom.position也是可以的。

 

Turning()函数:

这里涉及到通过光线投影来记录当前鼠标方向,来实现player视角的旋转的方法。

首先是



 我们将使用它来记录我们鼠标和Floor的碰撞,来获取我们需要的视角,实现旋转。这里我们需要使用到point属性。我们下面会讲到。

 

其次



这是光线投影碰撞的核心函数。四个参数中,后两个我们在这个脚本的开头定义一个定义好了。包括射线长度我们定位100,还有碰撞的层蒙版设为Floor。而前两个参数则是我们射线的起点和方向。该函数返回值为true则光线投影反生了碰撞,反之没有。

如果有碰撞发生,我们需要计算出新的旋转方向,并且使用这个方向来实现player视角的变化。这里使用Quaternion四元数来实现旋转。



 

最后Animating()函数

我们检测当前的水平,垂直速度是否为0,否则就是移动,我们就把角色的状态机的参数进行改变,实现动画效果。

 

 

------player的运动脚本基本就这些内容了,其他的在蛮牛的课程中也有讲解。如果你是直接看这篇博客可能不知所云,请见谅。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息