示例#1
0
    public void SpawnPlayer(ShmupPlayerData playerData, ShotTypeData shotData, int partyIndex, GameMasterScript.DamageTypes damageType, Character.StatusEffect[] effects)
    {
        spellCap        = true;
        playerTransform = Instantiate(shmupCharSpawn, transform.parent).transform;
        ShmupChar charScript = playerTransform.GetComponent <ShmupChar>();

        charScript.SetCharacter(playerData, shotData, partyIndex, damageType, effects);
        charScript.Respawn();
    }
示例#2
0
    public void SetCharacter(ShmupPlayerData charData, ShotTypeData shotTypeData, int partyIndex, GameMasterScript.DamageTypes setDamageType, Character.StatusEffect[] effects)
    {
        partyChar  = partyIndex;
        damageType = setDamageType;
        hitboxSize = charData.hitboxSize;
        hitboxSpriteRenderer.transform.localScale = new Vector3(0.25f, 0.25f, 1) * hitboxSize;
        borderOfLife = charData.borderOfLife;
        moveSpeed    = charData.moveSpeed;
        focusSpeed   = charData.focusSpeed;
        m_Anim.runtimeAnimatorController = charData.animations;
        extraBits         = new Transform[charData.extraBits.Length];
        extraBitAnims     = new Animator[extraBits.Length];
        extraBitRenderers = new SpriteRenderer[extraBits.Length];
        for (int i = 0; i < charData.extraBits.Length; i++)
        {
            extraBits[i]         = Instantiate(charData.extraBits[i], thisTrans.position, new Quaternion(), extraBitsContainer).transform;
            extraBitAnims[i]     = extraBits[i].GetComponent <Animator>();
            extraBitRenderers[i] = extraBits[i].GetComponent <SpriteRenderer>();
        }

        burstsFired       = 0;
        mainFired         = 0;
        subFired          = 0;
        mainFocusFired    = 0;
        subFocusFired     = 0;
        mainFireWait      = 0;
        subFireWait       = 0;
        bombWaitTime      = 0;
        bombTimeRemaining = 0;

        shotType = shotTypeData;

        int damageStrength    = 0;
        int defStrength       = 0;
        int mentalDefStrength = 0;
        int sizeStrength      = 0;
        int dizzyStrenth      = 0;
        int speedStrength     = 0;

        for (int i = 0; i < effects.Length; i++)
        {
            if (effects[i].effectType == Character.StatusEffectType.UnfocusLock)
            {
                unfocusLocked = true;
            }
            else if (effects[i].effectType == Character.StatusEffectType.FocusLock)
            {
                focusLocked = true;
            }
            else if (effects[i].effectType == Character.StatusEffectType.AttackUp || effects[i].effectType == Character.StatusEffectType.Weak)
            {
                if (Mathf.Abs(damageStrength) < Mathf.Abs(effects[i].strength))
                {
                    damageStrength = effects[i].strength;
                }
            }
            else if (effects[i].effectType == Character.StatusEffectType.DefenseUp || effects[i].effectType == Character.StatusEffectType.Frail)
            {
                if (Mathf.Abs(defStrength) < Mathf.Abs(effects[i].strength))
                {
                    defStrength = effects[i].strength;
                }
            }
            else if (effects[i].effectType == Character.StatusEffectType.MentalDefUp)
            {
                if (Mathf.Abs(mentalDefStrength) < Mathf.Abs(effects[i].strength))
                {
                    mentalDefStrength = effects[i].strength;
                }
            }
            else if (effects[i].effectType == Character.StatusEffectType.Graze || effects[i].effectType == Character.StatusEffectType.GrowBigger)
            {
                if (Mathf.Abs(sizeStrength) < Mathf.Abs(effects[i].strength))
                {
                    sizeStrength = effects[i].strength;
                }
            }
            else if (effects[i].effectType == Character.StatusEffectType.Dizzy)
            {
                if (Mathf.Abs(dizzyStrenth) < Mathf.Abs(effects[i].strength))
                {
                    dizzyStrenth = effects[i].strength;
                }
            }
            else if (effects[i].effectType == Character.StatusEffectType.MoveSpeedUp || effects[i].effectType == Character.StatusEffectType.MoveSpeedSlow)
            {
                if (Mathf.Abs(speedStrength) < Mathf.Abs(effects[i].strength))
                {
                    speedStrength = effects[i].strength;
                }
            }
        }

        damageEffect    = damageStrength;
        defEffect       = defStrength;
        mentalDefEffect = mentalDefStrength;
        sizeEffect      = sizeStrength;
        dizzyEffect     = dizzyStrenth;
        speedEffect     = speedStrength;

        damageMult    = 1 + (damageEffect * 0.1f);
        defMult       = 1 + (defEffect * 0.1f);
        mentalDefMult = 1 + (mentalDefEffect * 0.1f);

        playerScale = 1f + ((sizeEffect > 0) ? sizeEffect * 0.1f : sizeEffect * .2f);
        hitboxSize *= playerScale;
        thisTrans.GetChild(0).localScale *= playerScale;
    }