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;
}
}
스탯을 위한 스크립트이다. 몬스터가 될 Knight에 붙여주었다.
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을 상속해서 경험치와 재화를 추가하였다.
Player에 붙여주었다.
PlayerStat _stat;
void Start()
{
_stat = gameObject.GetComponent<PlayerStat>();
}
public enum PlayerState
{
Die,
Moving,
Idle,
SKill,
}
float moveDist = Mathf.Clamp(_stat.MoveSpeed * Time.deltaTime, 0, dir.magnitude);
int _mask = (1 << (int)Define.Layer.Ground) | (1 << (int)Define.Layer.Monster);
...
void OnMouseClicked(Define.MouseEvent evt)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100.0f, _mask))
{
_destPos = hit.point;
_state = PlayerState.Moving;
if (hit.collider.gameObject.layer == (int)Define.Layer.Monster)
Debug.Log("Monster Clicked!");
else
Debug.Log("Ground Clicked!");
}
}
}
PlayerStat _stat을 추가 하여 주었다.
기존에 moveDist에서 _speed에 해당하는 것을 _stat.MoveSpeed로 수정하였다.
그리고 땅과 몬스터 레이어에 해당하는 것을 클릭할때 사용할 _mask 변수를 선언하였다.
관련 내용은 Defince.cs에 적어놓았다.
public enum Layer
{
Monster = 8,
Ground = 9,
Block = 10,
}
레이어 관련 열거형 변수를 선언하였다.
로그가 잘 찍히는 것을 확인하였다.