【Unity3D】代码移动动画优化

设置X轴和Y轴的动画曲线,通过AnimationCurve.Evaluate获取进度中X和Y移动的进度的值,控制偏移。可以根据动画曲线控制平移时候的效果

在这里插入图片描述

using LuaInterface;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CurveHelper : MonoBehaviour
{
    [Header("X轴方向动画曲线")]
    public AnimationCurve animationCurveX;
    [Header("Y轴方向动画曲线")]
    public AnimationCurve animationCurveY;
    [Header("结束位置")]
    public Vector3 endV3;
    [Header("原始位置")]
    public Vector3 originalV3;
    /// <summary>
    /// 当前动画时间
    /// </summary>
    private float doTime = 0;
    [Header("动画总时间")]
    public float totalTime = 1;
    /// <summary>
    /// 终点和起点的x方向偏移
    /// </summary>
    private float offSetX = 0;
    /// <summary>
    /// 终点和起点的y方向偏移
    /// </summary>
    private float offSetY = 0;
    /// <summary>
    /// 是否开始播放动画
    /// </summary>
    private bool isBegin = false;
    public LuaFunction endCalBack;

    public void BeginAnimation(Vector3 oV, Vector3 eV, LuaFunction endCalB)
    {
        doTime = 0;
        isBegin = true;
        endV3 = eV;
        originalV3 = oV;
        transform.position = originalV3;
        offSetX = endV3.x - originalV3.x;
        offSetY = endV3.y - originalV3.y;
        endCalBack = endCalB;
    }
    // Update is called once per frame
    void Update()
    {
        
        if (isBegin)
        {
            transform.position = new Vector3(animationCurveX.Evaluate(doTime/totalTime) * offSetX + originalV3.x, animationCurveY.Evaluate(doTime/ totalTime) * offSetY + originalV3.y, endV3.z);
            doTime += Time.deltaTime;
            if (doTime >= totalTime) //动画时间结束
            {
                isBegin = false;
                if (endCalBack != null)
                {
                    endCalBack.Call();
                }
            }
        }
        
    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中的曲线(Curve)是一种用于控制动画的工具。在Unity中,可以使用AnimationCurve类来创建和编辑曲线。曲线可以用于控制物体的位置、旋转、缩放等属性随时间的变化。 在Unity中,可以通过代码或者在Curve控制器中生成曲线。通过代码控制曲线时,可以使用Keyframe数组来定义曲线上的关键帧,每个关键帧包含时间和值。可以设置关键帧的切线来控制曲线的斜率。例如,可以使用kf.outTangent = 45来设置关键帧的切线。然后,可以使用AnimationCurve类来创建曲线,并使用curve.Evaluate方法来获取曲线在指定时间点的值。 在Unity中,可以在动画片段中添加自定义曲线。可以展开曲线标题,然后单击加号图标将新曲线添加到当前动画片段。每个动画片段都可以有自己的自定义曲线。曲线的X轴表示标准化时间,始终在0.0和1.0之间,对应于动画片段的开始和结束。 另外,Unity中的曲线还可以使用Clamp函数来限制曲线的值。Clamp函数可以确保曲线的值始终在端点的值之间。 总结起来,Unity中的曲线是一种用于控制动画的工具,可以通过代码或者在Curve控制器中生成曲线。可以使用关键帧和切线来定义曲线的形状,使用AnimationCurve类来创建曲线,并使用curve.Evaluate方法来获取曲线在指定时间点的值。可以在动画片段中添加自定义曲线,并使用Clamp函数来限制曲线的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值