zoukankan      html  css  js  c++  java
  • 关于Unity 动画绘制原理

    动画绘制的原理:现在屏幕中确定动画的显示区域,然后将动画中的每一帧图片按固定的时间在这个区域中按顺序切换,从而实现动画的效果。建立文件夹Textures,里面放上图片,此处我截了三张图,风怒的小鸟图片放在该文件夹下,运行结果如下图,点击相关按钮小鸟做相关移动,脚本如下:

     private var anim:Object[];//动画数组

    private var nowFram:int;//帧序列

    private var mFrameCount:int;//动画帧总数

    private var fps:float=5;//限制一秒多少帧

    private var time:float=0;//限制帧的时间

    var x:int;

    var y:int;

    var tex:Object[];

     

    var bg:Texture2D;//背景图片

    function Start () {

        anim=Resources.LoadAll("Textures");//得到帧动画中所有图片资源

        mFrameCount=anim.Length;//得到动画有多少帧

        bg=Resources.Load("next_bg");

    }

     

    function Update () {

     

    }

    function OnGUI(){

       //绘制背景图片

       GUI.DrawTexture(Rect(0,0,Screen.width,Screen.height),bg,ScaleMode.StretchToFill,true,0);

       

       //调用DrawAnimation,参数一:动画数组,参数二:动画显示区域

       DrawAnimation(anim,Rect(x,y,32,48));//全局变量x,y确定主角的方向

       if(GUILayout.RepeatButton("up"))

       {

          y-=2;

          tex=anim;

       }

       if(GUILayout.RepeatButton("down"))

       {

          y+=2;

          tex=anim;

       }

       if(GUILayout.RepeatButton("left"))

       {

          x-=2;

          tex=anim;

       }

       if(GUILayout.RepeatButton("right"))

       {

          x+=2;

          tex=anim;

       }

    }

     

     

    function DrawAnimation(tex:Object[],rect:Rect)

    {

       GUILayout.Label("当前动画播放:地"+nowFram+"");

       GUI.DrawTexture(rect,anim[nowFram],ScaleMode.StretchToFill ,true,0);//绘制动画数组

       //计算限制帧时间

       time+=Time.deltaTime;

       if(time>=1.0/fps)

       {

          nowFram++;//帧切换

          time=0;//切换后限制帧的时间归零,从新计算

          if(nowFram>=mFrameCount)

          {

              nowFram=0;//若当前帧到达最后一帧,那么在从第0帧开始播放

          }

       }

    }

     

  • 相关阅读:
    【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
    【模拟题(63550802...)】解题报告【贪心】【拓扑排序】【找规律】【树相关】
    【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
    IMemoryBufferReference and IMemoryBufferByteAccess
    SoftwareBitmap and BitmapEncoder in Windows.Graphics.Imaging Namespace
    Windows UPnP APIs
    编译Android技术总结
    Windows函数转发器
    Two Ways in Delphi to Get IP Address on Android
    Delphi Call getifaddrs and freeifaddrs on Android
  • 原文地址:https://www.cnblogs.com/niguang/p/2781469.html
Copyright © 2011-2022 走看看