【Unity】用Lerp()实现类杀戮尖塔手牌变化

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

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
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值