//어택 데미지 데이터 받기 public void Bot_Damage_Operation(float MY_Total_Damage, Vector3 _ATK_Start_Vec, Vector3 _ATK_Target_Vec, byte _Gun_Type, bool _HeadShot_Check, bool Critical_Check) { //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ MY_HP -= MY_Total_Damage; if (MY_HP <= 0.0f) { MY_HP = 0.0f; } if (MY_HP <= 0.0f && Die_State == DIE_STATE.IDEL) { Die_State = DIE_STATE.ANI_START; Die_Atk_Start_Vec = _ATK_Start_Vec; Die_Atk_Target_Vec = _ATK_Target_Vec; Die_Atk_GunType = _Gun_Type; Game_Script.Bot_Kill_Count++; Game_Script.Bot_Kill_Operation(User_ID, _HeadShot_Check); //-------------------------------------------------------------------------------------- ByteData Send_Buffer = new ByteData(128, 0); //현재 플레이어가 사용하고 있는 유닛의 인덱스 Send_Buffer.InPutByte(Game_Script.Char_Script[Link_Script.i.User_ID].Char_Index); //봇 죽인 데이터 보내기 Net_Script.Send_Bot_Kill_Data(Send_Buffer); //-------------------------------------------------------------------------------------- } //수류탄, 유탄, 자살이 아닐때 캐릭터 맞았을때 터지는 임펙트 안그려준다. if ((GUN_TYPE)_Gun_Type != GUN_TYPE.GRENADE && (GUN_TYPE)_Gun_Type != GUN_TYPE.BOOMER_SKILL && (GUN_TYPE)_Gun_Type != GUN_TYPE.LAUNCHER && (GUN_TYPE)_Gun_Type != GUN_TYPE.SUICIDE) { Char_Hit_Effect_Check = true; Char_Hit_Effect_GunType = (GUN_TYPE)_Gun_Type; Char_Hit_Effect_Vec = _ATK_Target_Vec; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ //데미지 숫자 만들어주기 Transform GamePlay_Damage_Transform = Instantiate(Resources.Load("Battle_Prefab/2_UI_Folder/GamePlay_Damage") as GameObject).GetComponent <Transform>(); GamePlay_Damage_Transform.SetParent(GameObject.Find("Canvas").transform); GamePlay_Damage_Transform.localScale = new Vector3(1, 1, 1); GamePlay_Damage_Transform.localPosition = new Vector3(0, 0, 0); GamePlay_Damage_Transform.SetAsLastSibling();//가장 나중에 그려진 레이어로 맞추기 //텍스트 스크립트 초기화 GamePlay_Damage_Transform.GetComponent <Damage_Num_Script>().Make_Init(User_ID, Critical_Check, MY_Total_Damage, Damage_Num_Effect_Dir); if (++Damage_Num_Effect_Dir >= 2) { Damage_Num_Effect_Dir = 0; } //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ }
//캐릭터 죽는 연산 void Char_Die_Operation() { switch (Die_State) { case DIE_STATE.IDEL: break; case DIE_STATE.ANI_START: //캐릭터 죽을때 현재 스킬등 변수값 초기화 Char_Die_Skill_Init(); //사운드 재생 SendManager.Instance.PlayGameSound(AUDIOSOURCE_TYPE.AUDIO_3D, 30, Audio_Source); Die_State = DIE_STATE.RAGDOLL_START; break; case DIE_STATE.RAGDOLL_START: //리그돌 연산 시작 Ragdoll_Start(); Die_State = DIE_STATE.RESPAWN_TIME; break; case DIE_STATE.RESPAWN_TIME: Destroy_Time += Time.deltaTime; if (Destroy_Time >= 5.0f) { Destroy_Time = 0.0f; Die_State = DIE_STATE.RESPAWN_INIT; } break; case DIE_STATE.RESPAWN_INIT: Game_Script.Bot_Script.Remove(User_ID); Destroy(Head_Info_Transform.gameObject); Destroy(gameObject); //봇 만들기 Game_Script.Bot_Make_Count++; //Die_State = DIE_STATE.IDEL; break; } }