unity-2d rpg 29

2D RPG - (16 - 5) 블랙홀 스킬 구현_05

이번 포스트에서는 블랙홀 스킬의 버그를 수정하고 불필요한 연결 구조를 없애도록 하겠습니다. 1) SkillBlackHoleController      블랙홀 스킬의 조작을 담당하는 SkillBlackHoleController에 위와 같은 변경사항을 추가하였습니다.제일 위에서부터 1번으로 번호를 매겨 간단하게 정리해보았습니다.1번 : 블랙홀의 유지 시간을 의미하는 프로퍼티와 플레이어를 투명하게 할지 판단하는 프로퍼티2번 : BlackHole State에서 탈출하지 판단 / SetupBlackHole 메서드에서 블랙홀 유지 시간도 설정3번 : 블랙홀 유지 시간도 측정하여 적이 남았으면 분신이 마저 공격 아니라면 스킬 종료4번 : 분신의 공격이 끝나면 _playerCanDisapear로 판단하여 HotKey ..

2D RPG - (16 - 4) 블랙홀 스킬 구현_04

이번 포스트에서는 기존의 구조에 맞춰 블랙홀 스킬을 적용해보고 시각적으로 개선해보겠습니다. 1) BaseCharacterController   게임에서 사용하는 모든 캐릭터들의 조상 클래스인 BaseCharacterController에SpriteRenderer 프로퍼티를 추가하여 해당 프로퍼티를 통해 캐릭터를 투명하게 만드는MakeTransparent 메서드를 추가하였습니다. 2) SkillManagerpublic class SkillManager : MonoBehaviour{ public static SkillManager _skillManagerInstance; // SkillManager는 스킬을 수행하는 주체이므로, 각 스킬에 대해 알고 있어야 함 . . . public Skill..

2D RPG - (16 - 3) 블랙홀 스킬 구현_03

이번 포스트에서는 이전의 스킬 시스템에 블랙홀 스킬을 적용하기 이전에설계구조를 변경하고 수정하는 작업을 진행하겠습니다. 1) SkillBlackHoleController 우선, 스킬에 대한 Controller에서 프로퍼티에 접근하는 일을 막기 위해위와 같이 접근 수준을 private으로 변경하겠습니다.  또, 외부의 SkillManager에서 블랙홀을 설정하기 위해 새로 메서드를 생성하겠습니다.  마지막으로 블랙홀이 줄어들어도 적이 계속 얼어붙는 문제를 해결하기 위해 OnTriggerEnterExit2D 메서드를 위와 같이 설정하였습니다. 2) SkillBlackHolepublic class SkillBlackHole : SkillTemplate{ [SerializeField] private ..

2D RPG - (16 - 2) 블랙홀 스킬 구현_02

이번 포스트에서는 블랙홀에 묶여있는 적을 대상으로 올바른 키를 전부 입력한 후 R키를 누르면분신이 나타나 적을 공격하는 기능을 구현해보도록 하겠습니다.기존의 클론 생성 스킬을 수정하고 블랙홀 스킬의 Controller를 다듬어보는 방식으로 진행하겠습니다. 1) SkillCloningControllerpublic class SkillCloningController : MonoBehaviour{ . . . public void DoSetupClone(Transform newTransform, float cloneDuration, bool canAttack, Vector3 offset) { if (canAttack) _animator.SetInteger("At..

2D RPG - (16 - 1) 블랙홀 스킬 구현_01

이번 포스트에서는 적을 묶어 공격하는 블랙홀 스킬을 만들어보겠습니다.블랙홀 스킬은 적을 묶고 묶여있는 적에게 알맞은 키를 입력하면 분신을 소환하여 공격합니다.따라서 1차시에서는 적을 묶어두고 알맞은 키를 설정, 입력받는 절차를 구현해보겠습니다. 1) 구성1 - 1) 블랙홀 스킬 그 자체 블랙홀 스킬을 조작하기 위한 SkillBlackHoleController 클래스를 컴포넌트로 들고 있는 오브젝트입니다.적을 공격하기 위해 입력해야 하는 키를 KeyCodeList로 보관하게 있다가 묶여있는 적들에게 소환해줍니다. 1 - 2) 묶여있는 적들에게 소환되는 입력 키  TextMeshPro를 자식으로 갖고 있는 입력 키 오브젝트입니다.SkillBlackHoleHotKey 클래스를 통해 적 별로 입력 키를 설정하고..

2D RPG - (15 - 9) 단검 투척 스킬 구현_09

이번 포스트에서는 단검에 적중당한 적을 약간 경직시키도록 로직을 추가하겠습니다.또한 코드의 구조를 일부 개선하고 검이 너무 멀리 날아간 경우 파괴하는 로직을 추가하겠습니다.위의 과정을 통해 단검 투척 스킬 구현을 마무리하겠습니다. 1) 멀리 날아간 단검 파괴 - SkillThrowingSwordController  투척될 단검이 설정된 후 7초 뒤에 Invoke 함수를 통해DestroySword 메소드를 호출하여 검을 파괴하겠습니다. 2) 단검에 적중당한 적 경직 - EnemyControllerpublic class EnemyController : BaseCharacterController{ [Header("Move Info")] . . . private float _defaultMoveSpe..

2D RPG - (15 - 8) 단검 투척 스킬 구현_08

이번 포스트에서는 단검의 여러 상태 중에서 회전하는 단검을 구현해보도록 하겠습니다.추가적으로 튕기는 단검에서 단검이 튕겨질 때 적에게 피해를 주지 않던 현상도 수정하겠습니다. 1) 문제 수정 - SkillThrowingSwordController 날라가는 단검과 캐싱된 적의 거리가 0.1보다 작다면캐싱된 적의 EnemyController 컴포넌트를 가져와 DoGetDamage 함수를 호출함으로써문제를 해결할 수 있습니다. 2) 회전하는 단검 - SkillThrowingSwordpublic class SkillThrowingSword : SkillTemplate{ . . . [Header("Spint Info")] [SerializeField] private int _maxTrave..

2D RPG - (15 - 7) 단검 투척 스킬 구현_07

이번 포스트에서는 투척되는 단검에 새롭게 상태를 추가하고 기존의 단검을상태에 따라 다르게 동작하도록 코드를 재구성해보겠습니다. 1) SkillThrowingSwordpublic enum SwordType{ Regular, Bounce, Pierce, Spin}public class SkillThrowingSword : SkillTemplate{ public SwordType _swordType = SwordType.Regular; . . . [Header("Pierce Info")] [SerializeField] private int _pierceAmount; [SerializeField] private float _pierceGravity; ..

2D RPG - (15 - 6) 단검 투척 스킬 구현_06

이번 포스트에서는 단검이 적에게 적중하면 인접한 다른 적을 향해 단검이 튕겨나가도록 만들어보겠습니다. 1) SkillThrowingSwordControllerpublic class SkillThrowingSwordController : MonoBehaviour{ . . . // Bounce Info public bool _isBouncing; public int _bounceAmount = 4; public float _bounceSpeed; public List _enemyTargets; private int _targetIndex; . . . private void Update() { . . . if (_isBounci..

2D RPG - (15 - 5) 단검 투척 스킬 구현_05

이번 포스트에서는 단검 투척 스킬을 개선하고 일부 버그를 수정하겠습니다.개선사항은 다음과 같습니다.단검을 조준하는 상태에서 커서에 따라 플레이어를 회전단검이 회수될 때 회수되는 단검을 향해 플레이어를 회전기존의 ClearTheSword 함수 이름을 CatchTheSword로 변경회수 애니메이션의 특정 프레임에서 CatchState 탈출단검이 회수될 때 살짝 밀리게끔 수정단검을 던진 직후와 회수 직후 일시적으로 다른 상태로의 전환을 막음버그 수정사항은 다음과 같습니다.단검이 어딘가에 부딪히기 전 회수하는 경우, RigidBody가 무시되는 현상단검이 회수될 때 적에게 부딪히는 경우, 부딪힌 것으로 판정되는 현상달리는 상태에서 단검 조준시 움직일 수 있는 현상각각의 개선 사항과 버그 수정사항에 번호를 붙여 ..