1인 개발/Push And Slash

푸쉬앤슬래시 개인 프로젝트 4일차

잼잼재미 2024. 5. 6. 02:01

구현 내용


1. 데이터 저장 구현


https://kkln2486.tistory.com/408

 

데이터 저장 (Easy Save 에셋)

Easy save데이터를 쉽고 빠르게 저장 가능모바일 기기에서도 빠른 속도 JSON 및 XML과 비교하여 훨씬 빠르고 훨씬 적은 메모리 사용효율적이고 안전한 데이터 암호화빠른 개발과 오래된 지속적인 업

kkln2486.tistory.com

 

Easy Save 유료 에셋으로 데이터 저장을 구현

 

 

2. Dash 구현


 

  • 입력하고 있는 방향으로 순간적으로 달려갈 수 있는 Dash 기능 구현
  • UI에서 쿨타임을 확인할 수 있도록 쿨타임 표시 구현

 

 

https://kkln2486.tistory.com/212

 

쿨타임 표시 구현

쿨타임 표시 구현 1. 이미지 UI 준비 2. Image Type 변경 Filed로 변경 3. 보이는 방향 설정 4. 희미한 이미지 준비 5. 코드 작성 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.U

kkln2486.tistory.com

 

이전 프로젝트 쿨타임 표시 구현 내용을 참고하여 쿨타임 표시 구현

 

 

3. Skill 구현


 

  • Player Skill 구현
  • 쿨타임 표시 구현

 

4. Enemy 구현


 

 

  • 적 상태패턴 구현
  • WalkState 구현 (Target을 향해 이동)
  • AttackState 구현 (쿨타임 적용)
  • AI Navigation로 이동 구현

 

https://kkln2486.tistory.com/182

 

AI Navigation

AI Navigation 캐릭터, 몬스터, NPC 등 일정한 위치로 이동하게하는 기능 유니티가 제공하는 알고리즘을 통해 길을 찾고 알아서 판단하여 목적지에 도착 설정 방법 1. AI Navigation Install 2. Navigation Area

kkln2486.tistory.com

 

 

정면의 Player 인식 

EnemyController

public bool CheckPlayer()
{
    Debug.DrawRay(transform.position + new Vector3(0, 0.7f, 0), transform.forward, Color.green, 1.5f);

    if (Physics.Raycast(transform.position + new Vector3(0, 0.7f, 0), transform.forward, out hit, 1.5f))
    { 
        if (hit.transform.CompareTag("Player"))
        {
            return true;
        }
    }

    return false;
}

 

 

EnemyAttackState

if(_time >= _enemyController.EnemyData.AttackCoolTime)
{
    if(_enemyController.CheckPlayer())
    {
        _enemyController.AttackStart();
        _enemyController.Animator.SetTrigger("ReAttack");
        break;
    }
    else
    {
        _enemyController.WalkStart();
        _enemyController.Animator.SetBool("Attack", false);
        break;
    }
}

 

CheckPlayer 함수로 정면에 Player가 있는지 판단. 있다면, 다시 AttackState로 전환하고 없다면, WalkState로 전환 

 

 

회고


오늘은 전체적인 Player의 이동은 모두 구현하고 UI 버튼과 연결했다. 그리고 Player의 데이터를 저장하기 위한 Easy Save 에셋을 사용했다. 이전 프로젝트에서 Json으로 데이터 저장을 구현했지만, 모바일 기기에서 사용 시, 데이터 암호화나 속도 측면 등 유료 에셋을 사용하는 것이 앞으로 게임 개발을 하는데 훨씬 효과적이라고 생각해서 유료 에셋을 구매해서 사용했다. 사용하기 쉽다곤 하지만 처음 사용하는 것이기 때문에 메뉴얼을 읽고 사용 방법을 블로그에 정리했다. 그리고 Play의 공격과 Enemy의 공격을 구현하기 위해, Enemy 구현을 시작했다. Enemy는 이전 프로젝트에서 많이 사용했던 방법인 상태패턴을 사용했다. 현재는 WalkState와 AttackState를 구현했고, Player와 Enemy의 데미지 적용을 구현 후, HitState를 추가하도록 하겠다!