人物动画的控制

可以创建一个空的物体,代表Player,下面再创建3个空物体,代表站立,蹲下,跳起3种状态

每种状态创建一个脚本,因为每个状态里可能还有子状态,比如站立的时候,有不动和走路的区别,这些用脚本控制,

站立的时候脚本如下


using UnityEngine;
using System.Collections;


public enum AnimStatus 

    Idle,
    Walk
}
public class PlayerGround : MonoBehaviour {
    //上半身渲染器
    public SpriteRenderer upRender;
    public SpriteRenderer downRender;
    public float aniSpeed = 10;
    public float aniInterView = 0;


    public Sprite[] idleUpSpriteArray;
    public Sprite idleDown;
    private int idleupCurIdx = 0;
    private int idlenupLength = 0;
    private float idleupidleTime = 0;




    public Sprite[] walkUpSpriteArray;
    private int walkupCurIdx = 0;
    private int walknupLength = 0;
    private float walkupidleTime = 0;


    public Sprite[] walkDownSpriteArray;
    private int walkDownCurIdx = 0;
    private int walknDownLength = 0;
    private float walkDownidleTime = 0;




    public AnimStatus aniStatus = AnimStatus.Walk;
// Use this for initialization
void Start () {
        aniInterView = 1.0f / aniSpeed;
        idlenupLength = idleUpSpriteArray.Length;
        walknupLength = walkUpSpriteArray.Length;
        walknDownLength = walkDownSpriteArray.Length;
}

// Update is called once per frame
void Update () {
   switch(aniStatus)
        {
            case AnimStatus.Idle:
                
                idleupidleTime += Time.deltaTime;
                if (idleupidleTime >= aniInterView)
                {
                    idleupidleTime = 0;
                    idleupCurIdx++;
                    if (idleupCurIdx > idlenupLength)
                        idleupCurIdx = 0;
                    upRender.sprite = idleUpSpriteArray[idleupCurIdx];
                    downRender.sprite = idleDown;
                }
                break;
            case AnimStatus.Walk:
                
                walkupidleTime += Time.deltaTime;
                if (walkupidleTime >= aniInterView)
                {
                    walkupidleTime = 0;
                    walkupCurIdx++;
                    if (walkupCurIdx > walknupLength)
                        walkupCurIdx = 0;
                    upRender.sprite = walkUpSpriteArray[walkupCurIdx];
                    //downRender.sprite = idleDown;
                }
                walkDownidleTime += Time.deltaTime;
                if (walkDownidleTime >= aniInterView)
                {
                    walkDownidleTime = 0;
                    walkDownCurIdx++;
                    if (walkDownCurIdx > walknDownLength)
                        walkDownCurIdx = 0;
                    downRender.sprite = walkDownSpriteArray[walkDownCurIdx];
                    //downRender.sprite = idleDown;
                }




                break;
            default:
                break;
        }
}
}

其他状态类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值