• 关于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帧开始播放

          }

       }

    }

     

  • 相关阅读:
    SQL Server创建表
    SQL Server创建数据库
    SQL Server创建索引
    SQL Server创建视图
    SQL Server创建存储过程
    SQL Server创建触发器
    Unity3D与VS2008结合,加快Unity3D C#开发!
    c#哈希表的用法
    长沙做网站公司解密如何编写高效率的SQL语句
    高效SQL语句必杀技
  • 原文地址:https://www.cnblogs.com/niguang/p/2781469.html
Copyright © 2020-2023  润新知