Unity知识记录 |
您所在的位置:网站首页 › ae人物眨眼睛 › Unity知识记录 |
人物眨眼的关键是你的模型要有这个形变器。 首先找到你的Skinned Mesh Renderer中的BlendShapes属性。 展开后可以看到模型上所有的形变器,这里需要你尝试哪一个是控制眨眼的。 例如这里就是第0个和第1个变形器控制左右眼睛的状态。 所以接下来就是用代码来控制这两个属性,关键问题是如何设置这个值。 可以通过public SkinnedMeshRenderer skin 获取到对应得SkinnedMeshRenderer。 然后我们设置形变器的值就可以了,顺序是从上到下,从0开始。 怎么控制这个值的变化就看自己发挥了,我会给出一个运行方式。 彩紫睨羽 using System.Collections; using System.Collections.Generic; using UnityEngine; public class EyeBlink : MonoBehaviour { public SkinnedMeshRenderer skin; [Tooltip("是否激活眨眼")] public bool enableBlink = true; [Tooltip("眼睛闭上时的比例")] public float ratio_Close = 100f; [Tooltip("眼睛睁开时的比例")] public float ratio_Open = 0f; [Tooltip("眼睛当前的比例")] public float current_Ratio = 0f; [Tooltip("最小眨眼间隔")] public float minBlink = 2f; [Tooltip("最大眨眼间隔")] public float maxBlink = 4f; [Tooltip("最大眨眼时间")] public float timeBlink = 0.2f; [Tooltip("眨眼间隔计时器")] public float blinkTimer = 0f; [Tooltip("下次眨眼间隔")] private float blinkTime = 0; [Tooltip("眨眼的速度")] private float blinkSpeed; [Tooltip("是否在闭眼")] private bool closing = true; private bool blinking = true; void Update() { if (blinking) { blinkSpeed = (ratio_Close - ratio_Open) / timeBlink; if (closing) { current_Ratio += Time.deltaTime * blinkSpeed; } else { current_Ratio -= Time.deltaTime * blinkSpeed; } if (current_Ratio ratio_Close) { closing = false; current_Ratio = ratio_Close; } skin.SetBlendShapeWeight(0, current_Ratio); skin.SetBlendShapeWeight(1, current_Ratio); } else { if (blinkTimer > blinkTime) { blinking = true; } else { blinkTimer += Time.deltaTime; } } } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |