资源下载并导入:
Robot Kyle
导入标准资源库并修改资源库过时的错误
>>点击此处查看教程
这样就解决了
我们都知道,标准资源包里的人物,是自带脚本的。
而这些脚本,也可以应用到这个没有脚本的机器人上面,只需要绑定到上面就可以了。
可以看到,为它添加了控制脚本后,机器人凯莉自动添加了很多组件
我们需要对这些组件的参数进行一些微调
调整身高,质心,半径
离地高度检测
由于人形骨架在骨骼结构上的相似性,用户可以将动画效果从一个人形骨架映射到另一个人形骨架
从而实现动画重定向功能。
除了极少数情况之外,人物模型均具有相同的基本结构
即头部、躯干、四肢等。
现在的人站立时并没有动画效果,一动不动,我们可以给它添加一个动画
出现了一个问题:
凯莉站立的动画效果并没有正常显示
凯莉你倒是摇一下啊!!
Robot模型在没有Avatar的情况下是无法将动画直接应用模型上的,如果导入的模型没有Avatar,按照图示操作创建
解决方法:
Eng:
绿色表示正常
如图,这样应该就没问题了,再把Avatar(n.化身 n.阿凡达)绑定上
效果
凯莉终于晃了起来
吐槽一下
做一个吹泡泡的动画
新建一个场景,再新建一个动画状态集
创建一个空状态,改成walk,选择一个walk动作
给角色指定动画状态集
效果
人物走了起来
添加参数
选定动画
人在运动的过程中,这个曲线一直在变
我现在就要让这个值作用到我吹泡泡的大小上面
重命名
创建一个bubble球体并放到人的嘴前面
把它作为机器人的子对象
创建一个曲线控制脚本
using System.Collections; using System.Collections.Generic; using UnityEngine;public class CurveCtrl : MonoBehaviour {public Transform bubble;//公开应该对象,待会设置成bubbleVector3 originalScale;//设定初始泡泡大小// Start is called before the first frame updatevoid Start(){originalScale = bubble.localScale;}// Update is called once per framevoid Update(){float curve = GetComponent<Animator>().GetFloat("CurveValue");//通过调用安妮梅特组件的GetFloat函数来获取值,来修改泡泡的大小bubble.localScale = new Vector3(originalScale.x * curve, originalScale.y * curve, originalScale.z * curve);//根据走路节奏调整泡泡大小,让其或大或小} }
把脚本绑定到人上,然后记得指定那个泡泡
* ,老师又瞎鸡儿讲。当我啥也没说,不能这么做,要利用路径来获取
using System.Collections; using System.Collections.Generic; using UnityEngine;public class CurveCtrl : MonoBehaviour {Transform bubble;Vector3 originalScale;//设定初始泡泡大小// Start is called before the first frame updatevoid Start(){bubble = transform.Find("Root/Ribs/Neck/Head/bubble");//通过路径来获取bubbleoriginalScale = bubble.localScale;}// Update is called once per framevoid Update(){float curve = GetComponent<Animator>().GetFloat("CurveValue");//通过调用安妮梅特组件的GetFloat函数来获取值,来修改泡泡的大小bubble.localScale = new Vector3(originalScale.x * curve, originalScale.y * curve, originalScale.z * curve);//根据走路节奏调整泡泡大小,让其或大或小} }
效果
这个机器人看起来像个痞仔,桀骜不驯的样子,有没有,泡泡都是歪的
(18:48 终于做完了,这一节课 1/4 的内容做了半天,心累)