unity滑动条控制动画播放

前几天在itch上玩到这个游戏,感觉很有趣,叫做It's a wrap

玩家扮演一个“导演”,在时间轴上拖动带有不同动画的影片剪辑来控制场景中的物品,有点类似于pr的操作

所以这次尝试做一个用时间轴来控制动画播放的小demo

难点是如何通过时间轴标尺以及动画剪辑的位置来控制动画播放

我们使用UGUI内置的slider组件来制作标尺和剪辑

给上面黄色的标尺添加脚本

public class TimeController : MonoBehaviour {
    public float timeValue;
    private Slider slider;
    void Start () {
        slider = GetComponent<Slider> ();
    }
    void Update () {
        timeValue = slider.value;
    }
}

给下面的剪辑添加脚本

public class Clip : MonoBehaviour {
    private TimeController timeController;
    private Player player;
    private Slider slider;
    //片段与总长度的比例
    private float scale;
    void Start () {
        player = GameObject.FindGameObjectWithTag ("Player").GetComponent<Player> ();
        timeController = GameObject.FindGameObjectWithTag ("TimeController").GetComponent<TimeController> ();
        slider = transform.parent.parent.GetComponent<Slider> ();
        scale = GetComponent<RectTransform> ().rect.width / slider.GetComponent<RectTransform> ().rect.width;
    }
    void Update () {
        //计算播放的进度
        player.anim.Play ("sword_defend", 0, timeController.timeValue / scale - slider.value * (1 / scale - 1));
    }
}

注意要把橙色剪辑的锚点设置在左中心,不然拖动时会漂移

然后随便添加一个带有动画的人物

在起始时设定animator的speed为0,来冻结动画的播放

public class Player : MonoBehaviour {
    public Animator anim;
    void Start () {
        anim = GetComponent<Animator> ();
        anim.speed = 0;
    }
}

最后的效果

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值