개요피격 시 카메라가 흔들리는 연출이 통합을 거치면서 타 팀원이 작성한 CameraController와 충돌하며 정상적으로 작동하지 않는 문제가 발생했다. 따라서 이를 해결하기 위한 구조 개선 작업을 진행했다. 추가로 대시를 일상 씬일 때 막도록 return을 추가했다 내용 CameraShake.cs 구조 개선기존에는 transform.localPosition을 기준으로 흔들었지만, CameraController가 transform.position을 매 프레임 갱신하고 있어서 흔들림이 덮여버리는 문제 존재LateUpdate에서 CameraController의 이동 이후 transform.position을 기준점으로 잡아 매 프레임 흔들림 적용CameraShake 구조 변경originalPosition →..
개요Unity에서 플레이어 이펙트 시스템을 구축하고, 상태와 행동에 따라 자연스럽게 이펙트를 재생하도록 구현했다.또한 승리 및 사망 상태에 애니메이션을 추가해 전투 흐름을 더 풍부하게 만들었다. 내용 플레이어 이펙트 추가 (대시, 공격, 피격)각각의 액션/스테이트에서 이펙트를 재생하도록 구현이펙트 위치/방향 보정 로직 작성해 자연스럽게 출력되도록 조정EffectManager.cs 추가Singleton 기반 이펙트 관리 클래스 작성Attack, Dash, Hit 타입의 이펙트 재생 기능 분리PlayerController.cs에 이펙트 메서드 추가PlayAttackEffect() 메서드로 공격 시 위치 및 방향에 따라 이펙트 재생콤보 순서에 따라 이펙트를 반전 처리해 연출 다변화상태 애니메이션 추가Win, ..
개요캐릭터가 대시할 때 시각적으로 속도감과 몰입감을 주기 위한 연출로, 잔상 느낌의 이펙트를 구현하였다. 특히 이펙트가 이동 경로를 따라 자연스럽게 생성되도록 개선하는 과정이 핵심이었다. 내용1. EffectManager 구조 설계 싱글톤 방식으로 관리 PlayEffect(Vector3 position, EffectType type)을 통해 타입별 이펙트 실행using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.SceneManagement;public class EffectManager : Singleton{ [SerializeField] private GameObject h..
개요오늘은 플레이어의 공격 콤보 시스템과 피격 시스템을 중심으로 구현하고, 그 과정에서 발생한 문제들을 디버깅하고 구조를 개선하는 데 집중했다. 특히 플레이어가 연속으로 피격당하는 상황이나, 전투 중 모션 전환 타이밍 같은 세밀한 부분까지 고민하며 다듬었다. 기존에 구현했던 로직을 재활용할 수 있는 부분은 최대한 재활용해서 작업했다. 내용공격 시스템PlayerActionAttack 클래스에서 콤보 공격 단계 (ComboStep)를 관리하고, 애니메이션 이벤트로 콤보 입력 타이밍을 열어주는 구조로 설계.공격 중 SetAttackComboTrue/False를 통해 플레이어 입력을 받아 다음 콤보로 전환.에셋을 바꾸니 무기 회전을 시켜야했는데, 회전 시킨 무기가 휘둘러질 때 기존 무기 충돌 판정 영역이 붙어있..
개요부트캠프 측에서 유료 에셋을 구매해줘서 이제 free 주인공을 보내주고 기존의 로직을 바탕으로 주인공 캐릭터를 교체해야 할 때가 왔다. 내용 제일 큰 이슈는 기존 캐릭터에서 쓰던 애니메이터를 재사용하지 못하니 새로 만들어야한다는 것이었다.그래도 기존 캐릭터 만들면서 많이 배웠기에 차근차근 만들다보니 결과적으로 더 나은 구조로 변경하게 됐다.기존에는 Player 프리펩 하나로 무기 on/off정도만 관리했는데, 이제는 복장도 바뀌고, walk/run 구분도 필요해져서 아예 분리했다.BattlePlayer와 NormalPlayer는 각각 자신만의 Animator과 CharacterController를 갖고, 그 위의 부모인 Player에 기존 PlayerController 스크립트를 넣어줬다.이에 따라 ..
개요플레이어가 피격 당했을 때 이펙트 및 애니메이션을 구현했다. 내용일단 고민이 있었다 : PlayerState로 구현할 것이냐, PlayerAction으로 구현할 것이냐, 그냥 메서드로 구현할 것이냐일단 기준을 확고히 했다. PlayerAction은 플레이어 입력 행동(공격, 대시)이므로 맞지 않았다. 그리고 PlayerState로 구현하는 경우엔 상태가 전환되기 때문에 캐릭터에 대한 조작이 멈출텐데, 지금 개발하는 게임의 경우 하트 4개 맞으면 사망이라 해당 부분을 고려해서 피격 되어도 공격이 가능했으면 했다.따라서 메서드로 구현했다.#region 피격 관련 // TODO: Editor에서 확인하기 위한 임시용 public void TakeDamage() { if (Cur..
개요한줄 요약 : animation clip에 걸어둔 event가 실행이 안됐다.팀원분이 현재 공격 시 공격 콤보 판정이 끝나는 시점에서 호출되어야 할 메서드가 실행되지 않는 문제를 발견하셔서 공유해주셨다. 또한 공격 도중 대시를 하면 weaponController 클래스의 isAttacking 값이 true로 고정되어 공격 종료 처리가 안 되는 문제가 함께 발생했다. 내용중간에 새로운 AI 모델 썼다가 아주 길고긴...삽질의 여정이 있었다는 점을 밝혀두겠다.AI가 더 나은 구조라며 제시해줘서 혹한 나는 잘 작동하던 애니메이션을 Trigger로 바꾸고...Animator에서 이런저런 생쇼를 하며 구조를 다 바꿨다. 가 결국 다시 돌아왔다.중간에 animatorController가 버그 난 건 보너스^^ ..
개요플레이어에게 대시 버튼을 누르면 대시를 할 수 있도록 Action을 추가했다. 내용PlayerActionDash.cs 추가CharacterBase에 있는 moveSpeed 이용PlayerController.cs 수정공격 중에도 회피 취소 가능하도록 구현추후 UI 바인딩을 위한 DashButtonPressed() 메서드 추가이번에 추가한 PlayerActionDash 코드는 아래와 같다.using UnityEngine;public class PlayerActionDash : IPlayerAction{ private PlayerController player; private float duration = 0.25f; // 대시 유지 시간 private float timer; // 대시 경..