unity3d开发 打飞机小游戏(二)(飞机动画设置)

    紧接着上一期的场景继续啊~

    首先要介绍一个unity3d里面的概念叫层次layer,其实并不难理解嘛,就是越高层的东西就越不容易被覆盖嘛,最底层的一般就是背景嘛,点击你的场景里面的资源,然后右边Inspector里面的Sorting Layer就是了,我这里已经给它添加了几个,background,juese(角色。。。)和一些游戏的UI比如暂停按钮什么的。在这里显示越低下的就是越高层的,在这个界面显示的就是UI不会被覆盖,然后次高层是juese嘛

    

    接下来就是把image资源里面的飞机拖进去场景

    可以留意到右边有个固有的Transfrom之外还有一个组件叫Sprite Renderer,这个是一个这个资源的渲染,把Layer改成juese就好了,以后再仔细探讨这个Sprite Renderer的意味

     

    这样呢你点击播放,就可以看见飞机似乎是在向前飞行的了,但是呢太单调了,因为你的飞机是一直就这一个模型,那么我们下面让它的两个排气孔“动起来”哈

在资源包找到第二个飞机模型,这个飞机模型的尾气是不是短了一些啊,(身材也短了一些是因为我调了一下大小。。。)

     

     然后呢我们通过对帧的控制来实现“飞机的尾气一直在排放“这个效果,先说一下原理吧,这是2D游戏里面比较非常常用的控制角色动画的方法,就是通过控制帧,我第一帧播放第一个模型,第二帧播放第二个模型,第三帧播放第一个模型。。这样一直交替,在视觉上就像是飞机不断移动的过程中尾气也不断生成消失这样的效果

     

      看一下C#的脚本哈

      首先设置了一个控制一秒播放多少帧的变量,然后一个计时器,表示现在进行到多久了

      一个Sprite的数组嘛,因为你的飞机模型其实就是由SpriteRenderer组件控制的嘛,而Sprite就是里面的“外貌”嘛。

      首先Start()就是一开始我们就先获得它的组件,语法就是GetComponent<你想要的组件>(),当然你也可以不写在Start(),写在Update()也是支持的,但由于这个方法挺消耗资源的,而我们获取之后其实就没必要再次获取了,所以推荐写在Start()里面。

      Update()里面首先计时器加上每一帧的时间计时,然后呢1f/frameCountPerseconds 就是每一帧播放需要的秒数,然后用现在运行的时间/每一帧播放需要的秒数,就是得到你现在的是第几帧嘛,一开始看可能有点不懂,自己算一下就好了。然后分奇偶决定当前需要哪一个“外貌”,赋值给“外貌”变量渲染就好了嘛,这样就实现了动画功能

public class Hero : MonoBehaviour {

    //是否进行动画 若暂停则不播放动画
    public bool animation = true;

    //每秒播放10帧
    public int frameCountPerseconds = 10;

    //计时器,当前播放哪一帧
    public float timer = 0;

    public Sprite[] sprites;
    private SpriteRenderer spriteRender;

    void Start() {
        spriteRender = GetComponent<SpriteRenderer>();
    }

	void Update () {
        if (animation){
            timer += Time.deltaTime;
            int frameIndex =(int)(timer / (1f /frameCountPerseconds));
            int frame = frameIndex % 2;
            spriteRender.sprite = sprites[frame];
        }
	}
}

然后把脚本拖给飞机,并且在Sprites.Size那里填写2,把模型1和模型2分别拖进Element里面就OK啦



这样完成之后呢,就可以看到你的飞机一直在喷气啦,是不是很有趣呢,赶紧动手试试吧

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值