flybird 的小鸟动画
1 using UnityEngine; 2 using System.Collections; 3 4 public class Bird : MonoBehaviour { 5 6 public float timer = 0; 7 public int freamNumber = 10; //每秒播放的帧数 帧速率 8 public int freamCount = 0; //帧数 9 private Renderer rend; 10 // Use this for initialization 11 void Start () { 12 rend =GetComponent <Renderer >(); 13 } 14 15 // Update is called once per frame 16 void Update () { 17 timer += Time.deltaTime; //时间自增 18 //Debug.Log(timer); 19 if (timer >= 1.0f / freamNumber) { 20 freamCount++; 21 timer -= 1.0f / freamNumber; 22 int freamIndex = freamCount % 3; 23 rend .material .SetTextureOffset ("_MainTex",new Vector2 (0.333f*freamIndex ,0)); 24 //Debug.Log(freamCount); 25 } 26 } 27 }
这里难理解的就是小鸟的动画部分;
在Update函数中,
if (timer >= 1.0f / freamNumber)
可以保证此时timer和1.0f/freamNumber的值大小是相当的;
之后再次添加代码
timer -= 1.0f / freamNumber;
可使得此时的timer的值接近于0,
然后在执行
timer += Time.deltaTime; //时间自增
使得timer和Time.deltaTime的值大小相当,然后
if (timer >= 1.0f / freamNumber)
即 自增的时间大于Time.deltaTime>1.0f / freamNumber

浙公网安备 33010602011771号