-
Notifications
You must be signed in to change notification settings - Fork 2
hotfix‐StatApply
Jeon-YJ1004 edited this page Jul 28, 2023
·
3 revisions
- GameManager.cs 에서 CharacterData(CharacterScriptableObject)로 캐릭터 초기 스탯 값 설정
- 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]);
[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;
}
}
[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스탯만큼 체력회복, 치킨 습득시 스탯 만큼 추가 회복
[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];
}
}
[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 = 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];
}
public void GetExp(float exp)
{
exp=exp*GameManager.instance.CharacterStats[(int)Enums.EStat.Growth];
}
탐욕 수치를 통한 골드 획득량 = (기본 수치 + 추가 능력치) x 스테이지 골드 보너스
[GameManager.cs]
public void GetCoin(int amount)
{
amount =(int)Math.Ceiling(amount * CharacterStats[(int)Enums.EStat.Greed]);
Coin += amount;
}