コード例 #1
0
ファイル: SoldierInfo.cs プロジェクト: samafshar/MenOfFreedom
    public void KillSoldier(DamageInfo dmg)
    {
        BroadcastMessage("KillYourself", SendMessageOptions.DontRequireReceiver);

        if (owner_FightInReg != null && shouldDecreaseCountOfOwnerFightInRegOnDeath)
        {
            owner_FightInReg.DecreaseCountOfCreatedSoldiers_ForCountRespawnStyle();
        }

        charInfo.IsDead = true;
        mapLogic.RemoveChar(gameObject);

        DeadSoldAnim dsAnim = GetDeadSoldAnimForAnim(mainAnim, dmg);

        DeadSoldInitialInfo dsInitialInfo = new DeadSoldInitialInfo();

        dsInitialInfo.damageInfo             = dmg;
        dsInitialInfo.curRunningSoldAnim     = mainAnim;
        dsInitialInfo.curRunningSoldAnimTime = bodyInfo.animation[mainAnim].time;
        dsInitialInfo.curRunningSoldAnimTime = 0;
        dsInitialInfo.deadSoldAnim           = dsAnim;
        dsInitialInfo.initialPos             = transform.position;
        dsInitialInfo.initialRot             = transform.rotation;
        dsInitialInfo.offset    = body.transform.localPosition;
        dsInitialInfo.voiceInfo = voiceInfo;

        if ((dmg.damageType != DamageType.Explosion) && (Random.Range(0f, 0.9999f) < soldierGeneralInfo.DieAnimChance) && (deadSoldier != null) && (dsAnim != null))
        {
            DeadSoldier newDeadSoldier = Instantiate(deadSoldier, transform.position, transform.rotation) as DeadSoldier;

            newDeadSoldier.StartThisZombie(dsInitialInfo);
            //if(isMoving)
        }
        else
        {
            SoldierBodyInfo sBInfo = gameObject.GetComponentInChildren <SoldierBodyInfo>();

            Transform solBody = sBInfo.gameObject.transform;
            solBody.parent = null;

            RagdollCreator rdCreator = solBody.GetComponent <RagdollCreator>();
            rdCreator.MakeRagdoll(dmg, dsInitialInfo, true);
        }

        Destroy(gameObject);
    }
コード例 #2
0
ファイル: SoldierInfo.cs プロジェクト: samafshar/MenOfFreedom
    DeadSoldAnim GetDeadSoldAnimForAnim(string _curRunningAnim, DamageInfo _damageInfo)
    {
        DeadSoldAnim deadSoldAn     = null;
        string       curRunningAnim = _curRunningAnim;
        DamageInfo   damageInfo     = _damageInfo;

        DeadSoldEquivAnimInfo deadAnimEquivInfo = FindDeadAnimEquivInfoForCurRunningAnim(curRunningAnim, damageInfo);

        if (deadAnimEquivInfo != null)
        {
            deadSoldAn                      = new DeadSoldAnim();
            deadSoldAn.animName             = deadAnimEquivInfo.deadSoldierAnimsList.GetRandomAnimName();
            deadSoldAn.initialCrossfadeTime = deadAnimEquivInfo.crossfadeTime;

            return(deadSoldAn);
        }

        return(null);
    }