2016-04-03 15:52:33 zzlyym 阅读数 1099

        帧动画制作过程。

1:把几张图片拖到项目中,全选,改变它们的属性类型为精灵图,如图所示,之后apple应用一下。

2::精灵图全选,拖到Hierarchy中,这时会自动创建一个Animation的文件,我在场景中改名为Animation,这时你会发现精灵图的旁边出现了两个东西,如下图,第一个是控制动画的,第二个是动画。


3:可能初始图片不是我们想要的,这时选中Animation,如图属性中更改第一张显示的图片。

4:如果只让他播放一次,选中,looptime勾点掉,如果想改变他的播放速度,选中动画控制,属性点击open,出现下图的东西,选中,右边属性有个speed,数值越小,播放速度越慢。有错或者需要注意的地方请指出,谢谢了。


2018-05-08 09:08:15 qq_33994566 阅读数 9194

    当我们需要制作动态炫酷科技感很强的UI时,美术一般会给我们提供一些序列图,这时候我们只需在程序里实现序列动画。

一.动画机

    unity自带的帧动画机很方便,我们首先选择所要播放序列帧动画的Image,然后在Window下选择Animation,会弹出一个动画制动的界面,我们选择Create,然后进入如下界面:


我们按照如下添加动画控制的属性,


然后将我们美术给我们的序列图(要设置成2DandUI模式哦)拖入到动画帧面板里。


Unity自带的动画机播放序列帧动画很简单也很方便,但是有一定的局限性。因为我们不能很方便的控制动画的进程以及一些我们的要求。(虽然也可以,但是还是需要写代码,然后还要操控动画机,太费劲)。下面就介绍完全用代码控制动画播放的方法。

二.代码控制

    这个方法完全用代码实现,不需要在去操作一下动画机了。代码如下:

public class Test : MonoBehaviour {

    [SerializeField]
    private Image image;
    [SerializeField]
    private List<Sprite> animationSprites = new List<Sprite>();


    private int AnimationAmount { get { return animationSprites.Count; } }
    public void PlayAnimation()
    {
        if (image == null) image = GetComponent<Image>();
        StartCoroutine(PlayAnimationForwardIEnum());
    }

    private IEnumerator PlayAnimationForwardIEnum()
    {
        int index = 0;//可以用来控制起始播放的动画帧索引
        gameObject.SetActive(true);
        while (true)
        {
            //当我们需要在整个动画播放完之后  重复播放后面的部分 就可以展现我们纯代码播放的自由性
            if (index > AnimationAmount - 1)
            {
                index = 50;
            }
            image.sprite = animationSprites[index];
            index++;
            yield return new WaitForSeconds(0.03f);//等待间隔  控制动画播放速度
        }
    }
}

效果图如下:


以上就是序列图帧动画制作,希望对你有帮助。

2017-01-09 18:26:01 qq_26270779 阅读数 21738

本小主在这里给大家分享一下unity 2D游戏开发中制作帧动画的两种方法。

比较简单,一学即会。大笑


方法一:


是用代码控制:

先创建一个2D工程。导入图片资源,并设置texture的texture type为sprite,看下图:


1.拖一张背景图进去,再拖一张人物的Sprite进去


制作精灵帧动画,其实就是改变上图中方框1的SpriteRenderer的Sprite的参数;方框2是精灵所在的层级关系。

2.在精灵image75添加一个脚本donghua.cs

using UnityEngine;
using System.Collections;

public class donghua : MonoBehaviour {

    public Sprite[] Sprites;
    public float speed;
    private SpriteRenderer spriterenderer;

	void Start () {
        spriterenderer = GetComponent<SpriteRenderer>();

	}

	void Update () {
        int index = (int)(Time.time * speed) % Sprites.Length;
        spriterenderer.sprite = Sprites[index];
	}
}


脚本编辑完成后,把要制作成动画的图片拖进数组中,speed控制速度。


方法二:


第二种方法是用unity自带的Animator组件控制帧动画的播放。

1.选中多张贴图拖入场景,会弹出保存帧动画的对话框。



2.输入动画的名字保存后会生成两个文件,一个帧动画文件,一个动画状态机文件,双击打开红框动画状态机文件。


3.打开红框动画状态机文件后,单击go动画,可以在Inspector界面设置动画播放的速度。



然后就大功告成了,单击运行,看看动画效果吧。

下图中,右边的小人动画是第一种方法实现的,左边的小人动画是第二种方法实现的。















2016-09-14 16:44:46 u013017068 阅读数 1432

做拆装虚拟PC时,了解到:

1.unity里脚本控制动画可运用itween插件,方便且美观

2.3d max里调整视角是鼠标中建/鼠标中键+alt

3.3d max绘制数据线,可直接用样条线,并设置成曲线,通过调整视图可见与否控制曲线形状

4.3dmax导出fbx时需要将样条线转换成可编辑多边形,否则在unity中不可见


制作关键帧动画,调研unity变形动画时,学习到3dmax中可制作路径动画和路径变形动画相关知识:

http://ke.qq.com/webcourse/index.html#course_id=108610&term_id=100115610&taid=308700774508610&vid=x1407dscqlv

1.路径动画指按照设定路径移动,先将路径做出来,制作cube绑定动画到路径上,设置关键帧可设置速度方向,做好后导出fbx,将动画加入,在Unity中修改参数

2.路径变形动画指物体按照路径移动,且物体本身跟随路径发生变化,如龙在空中飞舞,可直接用自带路径变形命令,可unity中不支持播放,选用骨骼动画,对骨骼进行路径约束,对骨骼进行IK骨骼样条,导入Unity中。


2014-03-22 20:49:56 AWNUXCVBN 阅读数 6838


using UnityEngine;
using System.Collections;
using System.IO;

public class FrameAnimation : MonoBehaviour
{
    public Texture2D image;
    public int w;
    public int h;
    public float nextTime = 0.0f;
    public float rate = 0.3f;
    int i = 0;
    // Use this for initialization
    void Start()
    {
        w = Screen.width;
        h = Screen.height;
        image = new Texture2D(w,h);
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButton(0)&& Time.time > nextTime)
        {
            nextTime = Time.time + rate;
            i++;
            StartCoroutine(SaveImage(i));
        }
    }

    IEnumerator SaveImage(int i)
    {
        yield return new WaitForEndOfFrame();  
        image.ReadPixels(new Rect(0, 0, w, h), 0, 0, true);
        image.Apply();
        byte[] bytes = image.EncodeToPNG();
        File.WriteAllBytes(Application.streamingAssetsPath + "/"+i + ".png", bytes);
        yield return null;
    }
}


unity2d之2d帧动画创建

阅读数 14420

没有更多推荐了,返回首页