Skip to content

hotfix‐StatApply

Jeon-YJ1004 edited this page Jul 28, 2023 · 3 revisions

유혁진 explain-stat Wiki 참고

로직

  1. GameManager.cs 에서 CharacterData(CharacterScriptableObject)로 캐릭터 초기 스탯 값 설정
  2. CharacterStats(float[])에 파워업과 아이템 습득에 따른 가변적 스탯 저장 스탯의 초기값에 따라 저장되는 CharacterStats의 형태가 다르다.(0상수값 /1퍼센트)
//퍼센트
CharacterStats[(int)Enums.EStat.Might] = CharacterData.Might + UserInfo.instance.UserDataSet.PowerUpStat[(int)Enums.EStat.Might];
// 상수값
CharacterStats[(int)Enums.EStat.MaxHealth] = 1 + UserInfo.instance.UserDataSet.PowerUpStat[(int)Enums.EStat.MaxHealth];
//곱셈식
CharacterStats[(int)Enums.EStat.Magnet] = CharacterData.MagnetBonus *(1+ UserInfo.instance.UserDataSet.PowerUpStat[(int)Enums.EStat.Magnet]); 

스탯 별 적용된 코드

Armor 방어력

[Character.cs]
private void Start()
    {
        mArmor = GameManager.instance.CharacterStats[(int)Enums.EStat.Armor];
    }
    private void Update()
    {
        mArmor = GameManager.instance.CharacterStats[(int)Enums.EStat.Armor];
    }
public void TakeDamage(float damage, int weaponIndex)
    {
        if (damage - mArmor> 0)
        {
            mCurrentHp -= Time.deltaTime * (damage - mArmor) * 2;
        }  
    }

MaxHealth

[Character.cs]
    private void Start()
    {
        mMaxExp = 100;
        mCurrentHp = GameManager.instance.CharacterData.MaxHealth * GameManager.instance.CharacterStats[(int)Enums.EStat.MaxHealth];
        mMaxHp = GameManager.instance.CharacterData.MaxHealth * GameManager.instance.CharacterStats[(int)Enums.EStat.MaxHealth];
    }

Recovery

매초 recovery스탯만큼 체력회복, 치킨 습득시 스탯 만큼 추가 회복

[Character.cs]
private void Start()
    {
        InvokeRepeating("RepeatRecovery", 1, 1);
    }
public void RestoreHealth(float amount)
    {
        if (mCurrentHp < mMaxHp)
        {
            amount = amount * (1 + GameManager.instance.CharacterStats[(int)Enums.EStat.Recovery]);
            mCurrentHp += amount;
        }
    }
private void RepeatRecovery()
    {
        if (mCurrentHp < mMaxHp)
        {
             mCurrentHp +=GameManager.instance.CharacterStats[(int)Enums.EStat.Recovery];
        }
    }

MoveSpeed 이동속도

[PlayerMovement.cs]
private const float mMOVE_SPEED = 4f;// 기본 속도
private void FixedUpdate()
    {
        mRb.MovePosition(mRb.position + mMovement * (mMOVE_SPEED*GameManager.instance.CharacterStats[(int)Enums.EStat.MoveSpeed]) * Time.fixedDeltaTime); 
    }

Magnet 자석

Magnet = 30 * character bonus * PowerUp multiplier

[GameManager.cs]
CharacterStats[(int)Enums.EStat.Magnet] = CharacterData.MagnetBonus *(1+ UserInfo.instance.UserDataSet.PowerUpStat[(int)Enums.EStat.Magnet]); 
[GoToPlayer.cs]
private float mPickupDistance = 2.5f;
private void Update()
    {
        mPickupDistance *= GameManager.instance.CharacterStats[(int)Enums.EStat.Magnet];
    }

Luck 행운

Growth 성장

public void GetExp(float exp)
    {
        exp=exp*GameManager.instance.CharacterStats[(int)Enums.EStat.Growth];
    }

Greed 탐욕

탐욕 수치를 통한 골드 획득량 = (기본 수치 + 추가 능력치) x 스테이지 골드 보너스

[GameManager.cs]
 public void GetCoin(int amount)
    {
        amount =(int)Math.Ceiling(amount * CharacterStats[(int)Enums.EStat.Greed]);
        Coin += amount;
    }

Curse

Might 피해량

Cooldown 쿨타임

Area 공격범위

ProjectileSpeed 투사체 속도

Duration 지속시간

Amount 투사체 수

Revival,

Reroll,

Skip,

Banish,

Ommi,

Reflection,

Clone this wiki locally