本篇写的2D动画 主要是控制人物行走方向和播放的动画帧

自己没有找到4组合适的动画 无法看的很清楚 只能片面的截一张

用GUI生成了几个按钮来控制图中的Cube

记得相机弄成2D视角

这里写图片描述

如果你有合适的动画 放进相应的资源文件夹中即可

主要代码:
using UnityEngine;
using System.Collections;
public class AA : MonoBehaviour {
    // Use this for initialization
    private GameObject hero;
    private bool keyUp;
    private bool keyDown;
    private bool keyLeft;
    private bool keyRight;
    private float time;
    private float fps=10;
    private int nowFram;
    private Object[] animUp;
    private Object[] animDown;
    private Object[] animLeft;
    private Object[] animRight;
    private Object[] nowAnim;
    private Object[] backAnim;
    void Start () {

        hero=GameObject.Find("hero");
        animUp=Resources.LoadAll("up");
        animDown=Resources.LoadAll("down");
        animLeft=Resources.LoadAll("left");
        animRight=Resources.LoadAll("right");
        nowAnim=animDown;
        backAnim=animDown;
    }

    // Update is called once per frame
    void OnGUI () {

        keyUp=GUILayout.RepeatButton("up");
        keyDown=GUILayout.RepeatButton("down");
        keyLeft=GUILayout.RepeatButton("left");
        keyRight=GUILayout.RepeatButton("right");
    }
    void FixedUpdate(){
        if(keyUp){
            SetAnimation(animUp);
            hero.transform.Translate(Vector3.up*0.01f);
        }
        if(keyDown){
            SetAnimation(animDown);
            hero.transform.Translate(-Vector3.up*0.01f);
        }
        if(keyLeft){
            SetAnimation(animLeft);
            hero.transform.Translate(Vector3.forward*0.01f);
        }
        if(keyRight){
            SetAnimation(animRight);
            hero.transform.Translate(-Vector3.forward*0.01f);
        }
        DrawAnimation(nowAnim);
    }
    void SetAnimation(Object[] tex){
        Debug.Log("ing tex in for");
        nowAnim=tex;
        if(!backAnim.Equals(nowAnim)){
            nowFram=0;
            backAnim=nowAnim;
        }
    }
    void DrawAnimation(Object[] tex){
        time+=Time.deltaTime;
        if(time>=1/fps){
            nowFram++;
            time=0;
            if(nowFram>=tex.Length){
                nowFram=0;
            }
        }
        hero.renderer.material.mainTexture=(Texture2D)tex[nowFram];
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值