유니티/게임 프로젝트 27

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가 무시되는 현상단검이 회수될 때 적에게 부딪히는 경우, 부딪힌 것으로 판정되는 현상달리는 상태에서 단검 조준시 움직일 수 있는 현상각각의 개선 사항과 버그 수정사항에 번호를 붙여 ..

2D RPG - (15 - 4) 단검 투척 스킬 구현_04

이번 포스트에서는 이전에 만든 단검 투척 스킬을 조금 더 개선해보겠습니다.단검이 날아갈 때 시각적으로 돋보이게 개선하고단검이 적중한 후 다시 회수할 수 있도록 만들어보겠습니다. 1) PlayerControllerpublic class PlayerController : BaseCharacterController{ . . . // Skill Info . . . public GameObject _sword; . . . public void AssignNewSword(GameObject newSword) { _sword = newSword; } public void ClearTheSword() { Destroy(_sword); } . ..

2D RPG - (15 - 3) 단검 투척 스킬 구현_03

이번 포스트에서는 단검 투척 시에 단검의 궤적을 그리고 궤적대로 날아가도록 구현햐보겠습니다.따라서 기존의 단검 투척 스킬 그 자체를 의미하는 클래스인 SkillThrowingSword의 로직을 수정합니다. 1) SkillThrowingSwordpublic class SkillThrowingSword : SkillTemplate{ [Header("Skill Info")] [SerializeField] private GameObject _swordPrefab; [SerializeField] private Vector2 _launchForce; [SerializeField] private float _swordGravity; private Vector2 _finalD..

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

이번 포스트에서는 단검 투척 스킬에서 단검을 위한 스크립트를 구현해보겠습니다. 1) SkillThrowingSwordControllerpublic class SkillThrowingSwordController : MonoBehaviour{ private Animator _animator; private Rigidbody2D _rigidBody2D; private CircleCollider2D _circleCollider2D; private PlayerController _playerController; private void Awake() { _animator = GetComponentInChildren(); _rigidBody2D = GetCom..

2D RPG - (15 - 1) 단검 투척 스킬 구현_01

이번 포스트에서는 캐릭터의 스킬 중에서 단검을 투척하는 스킬을 구현해보겠습니다.우선, 캐릭터가 단검을 투척하는 동작을 수행할 수 있도록 설정하는 과정과 구성을 알아보겠습니다. 1) 사용하는 요소1) 단검 투척 스킬을 사용하기 위한 액션 2) 단검 조준 / 단검 투척 / 단검 회수의 3개의 애니메이션 3) 단검 투척시 Instantiate 함수로 생성할 단검 프리팹 4) 단검이 박히거나 / 단검이 움직이는 동안 연출될 단검의 애니메이션 2) 애니메이터의 구성1) Player의 애니메이터 2) 단검(=Sword)의 애니메이터 위와 같이 필요한 구성을 준비하였습니다.이제 코드로 넘어가보겠습니다. 3) 코드3 - 1) PlayerStateAimSwordusing System.Collections;using Sy..

2D RPG - (14) 분신술 스킬 구현

이번 포스트에서는 첫번째 스킬 중 분신술을 구현해보겠습니다.분신술을 위한 키를 따로 설정하지 않아 대쉬에 연동하여 발동하는 스킬로서,분신은 적을 발견하면 적을 공격하게 됩니다. 분신술은 다음의절차에 의해 수행됩니다.플레이어가 입력하면 SkillManager에 의해 분신술을 수행수행된 분신술에서 이전에 만들고 설정해놓은 분신 Prefab을 생성분신 Prefab에 설정된 컴포넌트에 의해 로직을 수행위의 절차에 맞춰 코드를 알아보겠습니다. 1) SkillCloningpublic class SkillCloning : SkillTemplate{ [Header("Clone Info")] [SerializeField] private GameObject _clonePrefab; [Serialize..