분류 전체보기 70

65일차 - Abyss_Slayer 최종 팀 프로젝트 15 (트러블 슈팅 보완, 메이지 스킬 구현)

▶▷ 이전 트러블 슈팅 보완1. 어제 작성했던 트러블 슈팅의 내용 중 애니메이션 클립 상의 회전값 적용에 대한 내용에 대해 방향에 맞는 이미지를 사용하는 것으로 문제를 해결했으나 원인이 궁금해서 찾아보았고 해당 내용에 대해 추가로 작성해보려고 한다.문제의 원인은 Apply Root Motion이었다. 루트 모션을 체크한 상태로 하면 적용이 되지 않고 해제하면 적용되는 것을 확인했다.루트 모션은 애니메이션에 포함된 리소스의 회전 및 이동 데이터를 자동으로 적용하는 것인데 이것 때문에 애니메이션의 회전이 정상적으로 적용되지 않고 어딘가에서 막힌 것 같다.2. 어제 해결하지 못한 코루틴의 반복에 대한 내용의 원인은 코루틴을 시작하는 부분에서 생긴 문제였다.기존에는 싱글톤으로 만든 별도의 코루틴 매니저를 통해 ..

64일차 - Abyss_Slayer 최종 팀 프로젝트 14 (메이지 스킬 트러블 슈팅 1)

▶▷ 스킬 및 애니메이션 트러블 슈팅막히는 점1. 애니메이션의 방향이 사용할 방향과 달라 애니메이션 클립에서 처음과 끝 프레임에 90도 회전하도록 설정하여 처음부터 90도 회전된채로 사용하려고 했으나 씬 화면에서만 회전이 적용된 것으로 보이고 게임 화면에서는 회전이 적용되지 않는 현상 2. 충격파가 캐릭터를 기준으로 한칸씩 간격을 둔 상채로 전진하는 스킬을 만드는 중 코루틴을 반복문으로 돌려도 충격파가 하나밖에 생성되지 않는 현상 시도한 점1-1. 애니메이션 클립에서 회전값을 변화시키는 프레임 위치 변경 시도1-2. 이펙트 프리펩의 인스펙터 상에서 회전값 직접 할당 시도1-3. 코드 상에서 이펙트의 transform 초기화 위치 수정2-1. 로직이 같아 동일한 스크립트와 풀을 사용하는 이펙트와 분리하기 ..

63일차 - Abyss_Slayer 최종 팀 프로젝트 13 (메이지 스킬 수정)

오늘은 기존의 레이캐스트를 사용하는 방식에서 콜라이더를 사용하는 방식으로 메이지의 s스킬을 수정하였다.RemoteZoneSkill.cs[CreateAssetMenu(fileName = "RemoteZoneSkill", menuName = "SkillRefactory/Range/RemoteZoneSkill")]public class RemoteZoneSkill : RangeAttackSkill{ [SerializeField] private float sizeX = 1; [SerializeField] private float sizeY = 1; [SerializeField] private float tickRate = 0.5f; // 몇 초 마다? [SerializeField] priv..

62일차 - Abyss_Slayer 최종 팀 프로젝트 12 (메이지 스킬 구현 2)

▶▷ 메이지 일반 공격 (x스킬)메이지의 일반 공격은 일직선상으로 일정 거리 내에 있는 적에게 데미지를 한번 주는 형식이다.[CreateAssetMenu(fileName = "MageSkillX", menuName = "SkillRefactory/Range/MageAttack")]public class MageAttackSkill : RangeAttackSkill{ public override void UseSkill() { base.UseSkill(); Vector3 dir = new Vector3(PlayerFrontXNomalized() * 1.5f, 0 ,0); // 플레이어 방향 계산 Debug.DrawRay(PlayerPosition() + di..

61일차 - Abyss_Slayer 최종 팀 프로젝트 11 (TrailRenderer 잔상 문제 해결)

이틀을 고민하던 투사체가 처음 생성되고 풀에 반환되기 전까지 TrailRenderer의 잔상이 생기는 현상을 드디어 해결했다.▶▷ TrailRenderer 잔상 문제 해결변경 전 // ... void Awake() { trailRenderer.enabled = false; } private void Update() { if(fired) { Move(); Rotate(); UpdateTrailPosition(); } } // ... /// /// 법사 유도탄 스킬 초기화 /// /// 데미지 /// 생성위치 /// 생성 시..

60일차 - Abyss_Slayer 최종 팀 프로젝트 10 (플레이어 스킬 구조 변경)

▶▷ 구조 변경모든 직업에 스킬 데이터를 배치하다 보니 앞 글에서 설명했던 기존에 사용하던 스킬 구조에 약간 문제점을 느꼈다.기존 방식은 모든 스킬에 SkillData라는 공통된 필드가 들어갔었는데 이렇게 할 경우 버프나 대쉬 스킬에 불필요한 정보들도 포함이 된다는 부분이다. 예를 들면 데미지 타입 같은 것은 버프나 대쉬에는 해당이 되지 않기 때문에 없어도 된다.그렇기 때문에 각 스킬에 해당하는 필드만 할당하기 위해 스킬이 범위 공격인지 근거리 공격인지 버프인지 이동기인지로 기준을 나누고 그 안에서 범위 공격이라면 한번만 공격하는 스킬인지 지속적으로 공격하는 스킬인지를 기준으로ScriptableObject를 나눠서 만들면 각 스킬마다 필요한 요소들만 필드에 할당할 수 있게 된다.이렇게 스킬을 만들면 아래..

59일차 - Abyss_Slayer 최종 팀 프로젝트 9 (메이지 스킬 구현)

▶▷ 메이지 a 스킬어제에 이어 여러개의 투사체를 발사하는 메이지의 a 스킬을 마저 구현했다.스킬 사용 시 플레이어의 주변에 투사체가 생성되고 타겟을 따라가는 유도탄 발사 스킬이다.MageSkill_a.csusing UnityEngine;using System.Collections;[CreateAssetMenu(menuName = "Skill/Mage/Mage_a")]public class MageSkill_a : SkillExecuter{ public float damage; [Header("발사정보")] public int count; // 투사체 개수 public float startCircleR; // 투사체 시작..

58일차 - Abyss_Slayer 최종 팀 프로젝트 8 (버프 지속시간)

오늘은 버프의 지속시간 감소 방식을 변경하였고 메이지의 a스킬인 유도탄 구현을 시작하였다.▶▷ 버프 지속시간 로직 수정기존에는 코루틴을 사용하여 지속시간 만큼 대기했다가 시간이 되면 버프 상태를 해제하는 방식으로 구현했었는데UI 부분에서 감소에 관련된 시각적인 부분을 구현하려면 지속시간 자체가 변경되는 것이 좋다고 하셔서 로직을 변경하게 되었다.변경 전 ArcherSkill_d.cspublic override void Execute(Player user, Player target, SkillData skillData) { // 버프 활성화 user.SetBuff(true); // 버프 지속 시간 후 비활성화 user.StartCoroutine(Dea..

57일차 - Abyss_Slayer 최종 팀 프로젝트 7 (아처 스킬 수정)

오늘은 투사체 증가 버프를 사용했을 때 지속시간 동안 추가되는 투사체가 같이 발사되어야 하는데 한발이 발사될 때가 있고 두발이 발사될 때가 있어서 이 문제를 해결하는데 대부분의 시간을 썼다. ▶▷ 트러블 슈팅막히는 점투사체 증가 버프 사용 시 버프 지속시간 동안은 2발이 정확히 발사 되어야 하는데 중간중간 1발만 발사되는 현상.원인디버그 로그를 찍고 인스펙터 창에서 플래그의 상태가 어떤지 확인해보았지만 문제 원인을 찾지 못함.예상치 못한 부분에서 코루틴 중단으로 인한 현상으로 추측.시도한 점버프를 사용하는 시점과 끝나는 시점, 추가 화살이 생성되지 않을 경우의 디버그 로그를 출력시켜보았으나 문제가 확인되지 않음.직렬화를 통해 인스펙터 창에서 버프가 끊기는지도 확인해봤는데 문제가 확인되지 않음코루틴을 사용..

56일차 - Abyss_Slayer 최종 팀 프로젝트 6 (투사체 오브젝트 풀링 2, 투사체 증가 버프)

오늘은 어제 있었던 오브젝트 풀링 관련 문제를 해결하고 각 스킬의 투사체 적용 방식을 변경하였다.▶▷ 오브젝트 풀링 트러블 슈팅막히는 점풀이 정상적으로 생성되지 않아 스킬을 사용하면 null 오류가 발생하는 현상원인현재 풀을 만드는 방식이 스크립트 타입을 키로 가져와서 만드는데 팀원께서 미리 만들어두신 보스 관련 풀 중에 스크립트가 잘못 할당되어 겹치는 부분이 있어서 같은 키가 인식되는 바람에 오류가 생겨 밑에 추가한 플레이어 전용 풀이 생성되지 않음해결중복되는 보스 관련 스크립트를 알맞은 스크립트로 변경 ▶▷ 투사체 적용 방식 변경기존에는 스킬마다 이펙트가 구분돼야 하기 때문에 이를 나누기 위해 각각의 투사체 프리펩 자체를 다르게 하려고 했다.그런데 현재 풀에 대한 로직이 프리펩이 나눠지게 되면 해당 ..