public int GetNextGrenade(){if(grenadeInHandIndex==-1){//手里没有手榴弹if(backpack.itemsInPack.grenadesInPack.Count>0){//背包里有,拿第一个return 0;}else{return -1;//背包里没有,不拿}}for(int i=0;i<backpack.itemsInPack.grenadesInPack.Count;i++){//手里有手榴弹,切换下一种if(backpack.itemsInPack.grenadesInPack[i].id!=backpack.itemsInPack.grenadesInPack[grenadeInHandIndex].id){return i;}}return -1;}
public void UseGrenade(){grenadeInHandIndex=GetNextGrenade();//去背包拿手榴弹if(grenadeInHandIndex==-1){//没拿到PutAwayGun();return;}animator.SetInteger(gunStatusPara,3);GrenadeDataBin grenadeDataBin=ItemDataManager.Instance.GetGrenadeData(backpack.itemsInPack.grenadesInPack[grenadeInHandIndex].id);grenadeInHand=Instantiate(grenadeDataBin.prefab,weaponHolder).GetComponent<Grenade>();grenadeInHand.grenadeDataBin = grenadeDataBin;grenadeInHand.owner=this;}
扔手榴弹方法通过动画事件执行
public void ThrowGrenade(){grenadeInHand.Throwed(aimAxis.forward*throwSpeed);backpack.TakeOutGrenade(grenadeInHandIndex);grenadeInHand=null;grenadeInHandIndex=-1;UseGrenade();//拿下一个或空手}
public void Throwed(Vector3 velocity){transform.SetParent(null);rigidbody.isKinematic=false;collider.isTrigger=false;rigidbody.velocity=velocity;Destroy(gameObject,lifeTime);}