Lerp的种类
- math类里的Lerp函数可以对很多种数据类型进行插值,这里主要用的是Vector3的,因为变换position、scale都要用
- 这里的难点是rotation,我试了用Quaternion.Lerp但是放弃了,因为参数必须也是Quaternion类型的(注意大写),
`public static Quaternion Lerp(Quaternion a, Quaternion b, float t);`
所以transform.rotation是不能作为参数的,quaternion.Eular(transform.eularangle)转换成的欧拉角同样也是用不了的,所以只能从欧拉角或借助LookRotation函数里加Lerp来变换
Hover时手牌强调动画
- 强调分三部分:放大、向上移动、取消原有的旋转,既然是Lerp做平滑,就一定是在update里,但是获取鼠标悬浮事件又需要OnMouseEnter,我的解决方法是用bool类型控制update中Lerp的开启或关闭
//鼠标进入
if (zoomIn && !zoomOut)
{
Focus();
}
//鼠标退出
if (zoomOut && !zoomIn)
{
UnFocus();
}
- 放大和向上移动很简单,注意transform.position就已经是世界坐标了,OnMouseExit的动画其实也就是lerp的一二两个参数对调一下
lerpTime += Time.deltaTime * zoomSpeed;
if (lerpTime <= 1)
{
transform.localScale = math.lerp(originscale, originscale * scaleRate, lerpTime);
transform.position = math.lerp(originPosition, originPosition + Vector3.up * moveDistance, lerpTime);
transform.localRotation = quaternion.LookRotationSafe(Vector3.forward,math.lerp(Vector3.up,orig

本文介绍如何在Unity中实现卡牌的动态布局与平滑动画,包括利用Lerp函数完成缩放、位移及旋转效果,并通过枚举类型管理卡牌状态。
最低0.47元/天 解锁文章
1万+





