每段动画都是从0~1播放的一个百分比,通过控制播放的时间,来控制开始播放的百分比,按下p键之后,从设置开始的百分比到结束的百分比,
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
/// <summary>
/// dcc
/// 获取使用该脚本物体的动画组件,并通过修改时间来控制动画开始和结束的百分比位置
///
///
/// </summary>
public class ControlAnimation : MonoBehaviour {
//获取动画组件
private Animation m_ani;
//动画片段的名字
public string animationCilpName = "Rotate_ani";
//开始的时间百分比
public float startTime = 0.3f;
//停止的时间百分比
public float stopTime = 0.8f;
// Use this for initialization
void Awake()
{
m_ani = GetComponent<Animation>();
}
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.P))
{
//播放
m_ani.Play();
//通过改变动画的状态(AnimationState)控制动画的运动
// public AnimationState this[string name] { get; }
//动画的整个过程的时间(normalizedTime)是0-》1
m_ani[animationCilpName].normalizedTime = startTime;
}
if (m_ani[animationCilpName].normalizedTime > stopTime)
{
//动画停止
//或者可以用
//m_ani.Stop();
m_ani[animationCilpName].normalizedSpeed = 0;
}
}
void PlayAnimation(bool isNormal)
{
if (isNormal)
{
//正常播放
//GetComponent<Animation>().Play("对应片段的名字");
GetComponent<Animation>().Play();
}
else
{
///倒播速度为-1,时间为正常的时间,,然后播放
GetComponent<Animation>()[GetComponent<Animation>().clip.name].speed = -1;
GetComponent<Animation>()[GetComponent<Animation>().clip.name].time = 1;
GetComponent<Animation>().Play();
}
}
}
unity3d版本:2017.2.0f3
案例百度云链接:https://pan.baidu.com/s/1PDFl_8ZX-mwXOhmjFW1wMw
提取码:klal