예제 #1
0
    //어택 데미지 데이터 받기
    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;
        }

        //------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    }
예제 #2
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;
        }
    }