查看: 815|回复: 0
打印 上一主题 下一主题

[其他] AnimationCurve 用法

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2015-8-30 00:16:05 |只看该作者 |倒序浏览
今天发现这个函数,查了一下,我觉得非常实用.编辑一条任意变化的曲线用在任何你想用在的地方。 如曲线地形,曲线轨迹.基本用法是:
1.创建物体.
2.创建脚本.
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour {
public AnimationCurve anim;
}

然后你就能在Inspector中看到 164557gr0k6sh8y61rc76m.png ,双击绿色线那个窗口你就可以进行编辑.进去怎么用就自己研究吧.

AnimationCurve可以理解为2部分。(1)键序列(2)左右循环模式(又作左右包裹模式)

一:键序列
创建键序列:Keyframe[] ks = new Keyframe[3];
曲线中加入键序列:AnimationCurve curve = new AnimationCurve(ks);
获取曲线中的键序列:curve[index]   或者 curve.keys[index]
添加单键:curve.Addkey(time,value)
删除单键:curve.RemoveKey(index)
二:左右循环
anim.preWrapMode = WrapMode.Loop;
anim.postWrapMode = WrapMode.Once;
三:键
Keyframe kf = new Keyframe(time,value);
kf.inTangent = 45;
kf.outTangent = 45;


例子就丢官方代码上来了:
public AnimationCurve anim;
    private Keyframe[] ks;
    void Start()
    {
        ks = new Keyframe[50];
        int i = 0;
        while (i < ks.Length)
        {
            ks = new Keyframe(i, i * i);
            i++;
        }
        anim = new AnimationCurve(ks);
    }

    void Update()
    {
        transform.position = new Vector3(Time.time, anim.Evaluate(Time.time), 0);
    }

我说下效果吧,就是物体一直斜向上升.
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-8-13 02:25 , Processed in 0.063955 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部