Chapter 13-3. 미니 RPG : 스탯
카테고리: Unity Lesson 2
태그: Unity Game Engine
인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
Chapter 13. 미니 RPG 만들기
🚀 스탯
- 📜Stat 👉 스탯을 가지는 모든 것들이 공통적으로 가지는 속성들
- 📜PlayerStat 👉 Stat을 상속 받음. 플레이어의 스탯
- 플레이어 오브젝트에 붙는다.
- 📜MonsterStat 👉 Stat을 상속 받음. 몬스터의 스탯
- 몬스터 오브젝트에 붙는다.
- 📜PlayerStat 👉 Stat을 상속 받음. 플레이어의 스탯
📜Stat
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Stat : MonoBehaviour
{
// 멤버 변수
[SerializeField]
protected int _level;
[SerializeField]
protected int _hp;
[SerializeField]
protected int _maxHp;
[SerializeField]
protected int _attack;
[SerializeField]
protected int _defense;
[SerializeField]
protected float _moveSpeed;
// 멤버 프로퍼티
public int Level { get { return _level; } set { _level = value; } }
public int Hp { get { return _hp; } set { _hp = value; } }
public int MaxHp { get { return _maxHp; } set { _maxHp = value; } }
public int Attack { get { return _attack; } set { _attack = value; } }
public int Defense { get { return _defense; } set { _defense = value; } }
public float MoveSpeed { get { return _moveSpeed; } set { _moveSpeed = value; } }
private void Start()
{
_level = 1;
_hp = 100;
_maxHp = 100;
_attack = 10;
_defense = 5;
_moveSpeed = 5.0f;
}
}
모든 스탯의 공통 요소 👉 레벨, 현재 HP, 최대 HP, 공격력, 방어력, 이동 속도
📜PlayerStat
플에이어인
unityChan
오브젝트에
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerStat : Stat
{
[SerializeField]
protected int _exp;
[SerializeField]
protected int _gold;
public int Exp { get { return _exp; } set { _exp = value; } }
public int Gold { get { return _gold; } set { _gold = value; } }
private void Start()
{
_level = 1;
_hp = 100;
_maxHp = 100;
_attack = 10;
_defense = 5;
_moveSpeed = 5.0f;
_exp = 0;
_gold = 0;
}
}
Stat
으로부터 상속 받은 것에 더해서 플레이어만의 스탯 👉 경험치, 돈
📜Define
public class Define
{
public enum Layer
{
Monster = 8,
Ground = 9,
Block = 10,
}
📜PlayerController
PlayerStat _stat;
public enum PlayerState
{
Die,
Moving,
Idle,
Skill, // ✨추가! (치유 스킬, 공격 스킬 등등)
}
void Start()
{
_stat = gameObject.GetComponent<PlayerStat>();
//...
}
void UpdateMoving()
{
//...
else
{
float moveDist = Mathf.Clamp(_stat.MoveSpeed * Time.deltaTime, 0, dir.magnitude);
}
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기