游戏开发技术走进课堂 ——4399技术研发中心
课程关卡总览 Carry大神 攻关日期 Round 1 Unity界面,菜单的介绍,Unity脚本系统介绍 李成 5.11 Round 2 关 卡 关卡详情 Carry大神 攻关日期 Round 1 Unity界面,菜单的介绍,Unity脚本系统介绍 李成 5.11 Round 2 Unity场景常用的各种元素介绍。物理引擎学习(刚体,碰撞器,角色控制器,射线),粒子系统初步了解 陆俊壕 5.18 Round 3 Unity输入控制与动画系统 汪晓龙 5.25 Round 4 animator动画系统的学习,Unity自带的保存类的学习,场景切换学习,播放音乐学习 邓永健 6.1 Round 5 ugui,ngui 界面入门介绍,各基层控件介绍 李飞 6.8 Round 6 综合,打包,assetbundle,profiler,总评 6.15
Unity输入控制与动画系统 —— 汪晓龙 4399 技术研发中心
课程大纲 输入控制介绍 模型资源的导入 Animation动画系统 动画事件 2017/3/3
Part1:Unity输入控制介绍 2017/3/3
键盘事件 判断某键是否按下 Input.GetKeyDown: Input.GetKeyUp: Input.GetKey: 判断某键是否抬起 判断某键是否一直处于按下状态 对应的keycode: http://docs.unity3d.com/Documentation/ScriptReference/KeyCode.html 2017/3/3
鼠标事件 判断鼠标哪个按键被按下,参数为0表示左键被按下,为1表示右键被按下,为2表示中键被按下 Input.GetMouseButtonDown() 判断鼠标哪个按键被按下,参数为0表示左键被按下,为1表示右键被按下,为2表示中键被按下 Input.mousePostion 可得到当前位置的三维坐标 Input,GetMouseButtonUp() 判断鼠标的抬起事件 Input,GetMouseButton() 判断鼠标长按事件 2017/3/3
触屏事件 取触屏第N个点的状态,主要包括 Began(开始),Moved(移动),Ended(离开)等 Input.GetTouch(i).phase 取触屏第N个点的状态,主要包括 Began(开始),Moved(移动),Ended(离开)等 Input.GetTouch(i).position 获取触屏点击屏幕上的点 Input.touchCount 当前屏幕触屏响应数 2017/3/3
自定义按键事件 可以通过输入管理器来自定义按键组合,系统已经定义好了一些常用的自定义按键了,自定义按键更常用于家用机游戏比如(XBOX),FPS游戏中 通过Input.GetAxis("xxx")取得对应自定义键当前的值(注意:自定义按键系统取的值实际一个渐变的值) 2017/3/3
Alt Negative Button 备选反向按钮 给轴发送负值的另一个按钮 自定义按属性说明: Negative Button 反向按钮 该按钮会给轴发送一个负值 Positive Button 正向按钮 该按钮会给轴发送一个正值 Alt Negative Button 备选反向按钮 给轴发送负值的另一个按钮 Alt Positive Button 备选正向按钮 给轴发送正值的另一个按钮 Sensitivity 灵敏度 该值越大则响应时间越快,该值越小则越平滑 Gravity 重力 输入复位的速度 2017/3/3
本部分小结 Unity常见的输入控制事件包括哪些? 怎么判断某个键被按下? 怎么获取当前鼠标在屏幕中的坐标? 2017/3/3
Part2:Unity模型资源的导入 2017/3/3
模型的导入 Unity常用的模型格式:fbx,直接拖进Project视图,成为一个预设。Fbx文件可以包括网格模型,骨骼与动画。 2017/3/3
模型的导入 将Fbx拖入场景中,作为一个游戏对象,可以看到模型效果 Unity常用的模型格式:fbx,直接拖进Project视图,成为一个预设。Fbx文件可以包括网格模型,骨骼与动画。 2017/3/3
创建材质贴图 将材质图片拖入Project视图,创建一个材质球,然后在材质球属性那里选中拖入的贴图,最后将这个材质球拖到 fbx下面的网格模型下 这个时候模型是没贴图的,白色的。需要创建材质球并导入材质贴图。 2017/3/3
模型动画类型 然后在Animations里面设置动画相关属性,可以分割动画,增加新的动画片段,Wrap mode表示循环模式 将模型的动画类型选择为Legacy(表示老版本的动画,新版本动画下节课介绍) 2017/3/3
注意 Unity分新老动画系统,Legacy属于老动画系统, Generic,Humanoid属于新动画系统。 模型文件,动画文件的动画类型要一致 系统默认使用Generic动画类型,需要手动设置动画类型为Legacy 2017/3/3
本部分小结 Unity常用的模型格式是什么?如何导入到游戏里? 材质有什么作用?怎么设定材质? animation动画怎么做切割? 2017/3/3
Part3:animation组件介绍 2017/3/3
animation组件 场景中的模型对象会有一个animation组件,通过这个组件来控制模型的animation动画, 可以设置默认动画,模型包含的动画数组,是否自动播放等 2017/3/3
动画的播放,切换 animation.Play("Run"): 停止当前动画并播放Run动画 animation.CrossFade("Run",time): 在的一定时间,淡入名称为Run的动画并且淡出其他动画,默认是0.3秒 2017/3/3
键盘控制角色移动,鼠标控制角色视野,点击鼠标左键攻击。 本节练习内容: 键盘控制角色移动,鼠标控制角色视野,点击鼠标左键攻击。 注意:角色要播放相应动画。Idle,Run,Attack 2017/3/3
Part4:动画事件 2017/3/3
动画事件应用: 1. 打击帧 2. 动画结束 3. 其它 2017/3/3
在Unity中对动画文件进行操作,在播放此动画时,unity会在指定的时间点,进行函数回调。 原理: 在Unity中对动画文件进行操作,在播放此动画时,unity会在指定的时间点,进行函数回调。 2017/3/3
具体操作: 动画事件,可以实现动画播放到某个时刻触发相应函数。 预先为要添加动画事件的对象绑定一个脚本,并写一个响应函数(比如OnAniEnd()) 选中要添加事件的模型,然后打开window窗口下的animation菜单,选择一个动画,在相应的时间点点击右键,点击add Animation Event按钮,选择响应的响应函数 2017/3/3
注意: 添加动画事件时,Animation组件要引用导出的动画片段AnimationClip才行,如果直接从动画fbx中引用,则动画片段是只读的。 2017/3/3
注意: 如何从动画文件中导出动画片段?选中动画文件中下的动画片段,按Ctrl+D组件键。 2017/3/3
本部分小结 通过animation组件控制模型对象的动画播放的函数有哪2个?分别有什么区别? animationevent有什么作用?如何添加? 2017/3/3
角色攻击动作打击点时,向角色面朝方向发射一个球。 本节练习内容: 角色攻击动作结束时,播放Idle动画。 角色攻击动作打击点时,向角色面朝方向发射一个球。 2017/3/3
作业 小游戏争分夺秒:随机位置生成七个球,控制主角在地图拾取七个球,十秒钟内必须完成,否则失败 具体要求: 1 随机位置在地图上生成七个球(球可以用系统自带的球体) 2 用键盘控制本课程中的角色移动,鼠标左键攻击到达打击帧时,拾取碰到的球。 3 通过Time类显示每次拾取球花费的时间 2017/3/3