기존 스탯, 각성을 기반으로 어빌리티 작성
어빌리티 업그레이드를 위한 랭크 랜덤 확률
어빌리티 효과 랜덤 값
랭크와 확률에 대한 SO 작성
UI Prefab에 Abiliity 연결
Setting Value :: Ability Cost, Ability UpgradeInfo 부분 분리
어빌리티 기능 데이터 Scriptable Object -> CSV 변경
// 수정 필요 => 어빌리티 스톤 부족시 문구, 껏다 키면 부족 재화 빨간색 안뜸
단일(메인) 퀘스트 추가. (보스 자동 도전 1회)
퀘스트 CSV 파일 불러오기 후 버튼 클릭시 적용
QuestManager에서 테스트용 퀘스트 id에 스트링값으로 변경 가능.
// 수정 필요 :: StageManager 에서 보스 클리어 메서드 부분 Invoke 수정 필요.
자동 소환 (등급 업 효과중 && 등급 업 후 다음 소환 진행)
자동 소환 중에는 소환하기 및 나가기 버튼 비활성화 유지
프리팹 (스프라이트 & 애니메이션) 설정
SkillManager 프리팹 정보 등록 (프리팹, SO, 아이콘, CSV)
CSV 시트에 스킬 추가
스킬의 회전을 Acos과 내적을 이용한 계산을 통해 적용.
// 타겟의 위치로 회전 (Target Transform, gameObject Transform)
// 부모가 피격지점이 되야함.
// 벡터의 내적 -> -> = 1, -> <- = -1 / 0도 = 1, 90도 = 0, 180도 = -1
// 즉, 타겟이 플레이어를 바라보는 방향과 플레이어에서 타겟을 바라보는 방향의 내적이 -1을 이뤄야함.
// 플레이어 -> 타겟, 타겟 -> 플레이어 의 벡터
// float Dot = Vector3 Dot(A, B); , float Angle = Mathf.Acos(Dot); => 두 벡터 사이의 각도 (라디안)
// :: 내적으로 구하기에 나오는 각도는 0 ~ 180도, 그 이상 각도를 구하기 위해서는 x가 0보다 크면 360을 빼줘야함.
Vector3 directionToPlayer = (gameObject.transform.position - targetTransform.position).normalized;
Vector3 playerTransformDown = transform.up * -1;
if (Vector3.Dot(playerTransformDown, directionToPlayer) > -1)
{
//var directionToTarget = (targetTransform.position - gameObject.transform.position).normalized;
float angle = Mathf.Acos(Vector2.Dot(Vector2.up, directionToPlayer)) * Mathf.Rad2Deg;
if (directionToPlayer.x < 0)
angle = 360 - angle;
Quaternion lookRotation = Quaternion.AngleAxis(angle, Vector3.forward);
gameObject.transform.rotation = lookRotation;
}
어빌리티 던전 추가
전투 시스템 재구성