UnityCS项目(枪战类)

                                 //动画播放设置

//设置默认动画状态

private PlayerState state=PlayerState.Draw;

//1.播放动画

void PlayAnimation()
    {
        switch (state) //不同的动画状态
        {
            case PlayerState.Draw:
                //an.Play(StaticGameResources.draw);
                break;
            case PlayerState.Fire:
                an.Play(StaticGameResources.fire);
                ChangeState(PlayerState.Fire);
                break;
            case PlayerState.Reload:
                an.Play(StaticGameResources.reload);
                ChangeState(PlayerState.Reload);
                break;
            default:
                break;
        }
    }

//2.切换动画状态

void ChangeState(PlayerState playerState)
    {
        switch (playerState)
        {
            case PlayerState.Draw:
                break;
            case PlayerState.Fire:
                fireTimer-=Time.deltaTime;
                if (fireTimer <= 0)
                {
                    state = PlayerState.Draw;
                    fireTimer = an[StaticGameResources.fire].length;    //倒计时,动画播放结束切换回默认状态
                }
                break;
            case PlayerState.Reload:
                reloadTimer -= Time.deltaTime;
                if (reloadTimer <= 0)
                {
                    //num = 30;
                    state = PlayerState.Draw;
                    reloadTimer = an[StaticGameResources.reload].length;
                }
                break;
        }
    }

//3.在Update里调用PlayAnimation

void Update()
{
       PlayAnimation();
}

//在开火里切换动画播放

void Fire()
{

        if (Input.GetMouseButtonDown(0))
       {
            AudioSource.PlayClipAtPoint(fireclip, Camera.main.transform.position, 1);  //声音播放
            state= PlayerState.Fire;       //将动画改为开火状态
            Ray ray=new Ray(pos.position,transform.forward);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit,100))      //发出射线
            {
                print(hit.collider.name);
                GameObject holeobj= Instantiate(hole, hit.point,transform.rotation);
                holeobj.transform.LookAt(hit.point - hit.normal);
                holeobj.transform.Translate(Vector3.back*0.03f);
                Destroy(holeobj, 3f);
            }

        }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值