//动画播放设置
//设置默认动画状态
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);
}
}
}