https://www.youtube.com/watch?v=aYSHRXrJcyg https://github.com/onestone3647/Portfolio_ProjectReplica.git GitHub - onestone3647/Portfolio_ProjectReplica: Seo Won Seok ProtfolioSeo Won Seok Protfolio. Contribute to onestone3647/Portfolio_ProjectReplica development by creating an account on GitHub.github.com https://lykanstudio.tistory.com/109 [Project Replica] EffectSystemhttps://youtu.be/qzUb8AgO..
Project Replica
https://github.com/onestone3647/Portfolio_ProjectReplica GitHub - onestone3647/Portfolio_ProjectReplica: Seo Won Seok ProtfolioSeo Won Seok Protfolio. Contribute to onestone3647/Portfolio_ProjectReplica development by creating an account on GitHub.github.com ObjectPool로 관리하는 오브젝트들을 보다 효율적으로 관리하기 위해 PoolableInterface 인터페이스 클래스를 도입했습니다. 이를 통해 오브젝트 관리를 보다 체계적으로 할 수 있게 되었습니다. 기능 설명 BaseObjectPoolSy..
https://youtu.be/qzUb8AgOTD4 이펙트를 액터 컴포넌트에서 ObjectPool로 관리하는 기능을 구현했습니다. 이펙트를 액터를 사용하여 구현할 필요는 없지만, 나중에 구현할 TimeStop 기능에서 GlobalTimeDilation 대신 액터의 CustomTimeDilation을 사용할 수 있도록 하기 위해서 액터와 이를 관리할 액터 컴포넌트를 사용하여 구현하였습니다. 기능 설명DataTable의 정보를 기반으로 이펙트를 생성합니다. 이때 생성된 이펙트는 초기에 비활성화 상태입니다.EffectSystem의 EffectPool에서 특정 Key를 사용하여 해당 이펙트의 Pool을 찾습니다. 이때, Pool이 존재하지 않는 경우 동적으로 Pool을 생성합니다. 이펙트의 Pool에서 활성..
https://youtu.be/_G0_9tUjaRs?si=eu1vj4mJ_4h7ipQr 캐릭터의 앞에 일정 높이 이하의 장애물이 있으면, 장애물을 뛰어넘는 기능을 구현했습니다. 기능 설명 캐릭터의 앞에 뛰어 넘을 수 있는 장애물이 있는지 Trace를 사용하여 탐색합니다.뛰어 넘을 수 있는 장애물이 있을 경우 장애물의 깊이를 Trace를 사용하여 계산합니다.장애물의 끝에서 일정 거리 떨어진 부분으로 애니메이션을 재생하며 캐릭터를 이동시킵니다. 구현장애물 탐색 캐릭터의 위치를 TraceStart로 설정하고 TraceStart에서 캐릭터의 전방으로 VaultableObjectTraceDistance만큼 떨어진 거리를 TraceEnd로 설정하여 Trace를 실행합니다. ..
https://youtu.be/-JDrNxF66qM?si=MOYP5CafxU-dsULo 캐릭터나 사물에 가하는 대미지를 처리하는 시스템입니다. 클래스 관계도는 다음과 같습니다. 대상에게 대미지를 전달할 때, 대상에게 Interface_PRDamageable 인터페이스가 존재하는지 확인한 후 존재할 경우 Interface_PRDamageable의 TakeDamage 함수로 대미지의 정보를 나타내는 PRDamageInfo 구조체를 전달합니다. 대미지를 전달하는 PRDamageInfo 구조체의 구조는 다음과 같습니다. Amount: 대미지 양입니다. DamageType: 대미지의 유형입니다. Melee: 근거리 공격으로 인한 대미지입니다. Projectile: 원거리(투사체) 공격으로 인한 대미지입니다. En..
https://youtu.be/EJNKKzYF0Is AISpawnSystem을 게임 내에서 AI 캐릭터를 ObjectPooling으로 관리하는 컴포넌트입니다. 주요 기능과 역할을 다음과 같습니다. AI 풀 관리 AI 스폰 AI 동적 생성 및 풀링 동적 생성된 AI 캐릭터 관리 AI 풀 관리 AISpawnSystem은 GameMode의 PostInitializeComponents 함수에서 컴포넌트를 초기화하면서 초기 AIPool을 생성합니다. // AProjectReplicaGameMode.h // Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "ProjectReplica.h" #include "GameFramework/Game..
https://youtu.be/8aK99pYxqTs 캐릭터가 적이 공격하는 정확한 타이밍에 회피를 실행하여 회피를 하게 되면 캐릭터를 제외한 모든 것이 시간이 멈춘 것처럼 멈추게 되어 적이 무방비상태가 되는 스킬을 구현해봤습니다. 월드의 시간이 멈춘것처럼 구현하는 것은 GlobalTimeDilation의 값을 조절하여 구현했습니다. 캐릭터가 회피 애니메이션을 재생하면 AnimNotifyState 클래스로 적의 공격을 탐지하는 캐릭터 클래스의 ExtremeDodgeArea Collision을 활성화합니다. 회피하는 동안 캐릭터는 적의 공격의 대미지를 받지 않는 상태이며 적의 공격이 캐릭터에게 닿을 경우 SkillSystem의 ExtremeDodge 스킬을 실행합니다. ExtremeDodge 스킬이 실행되면..
https://youtu.be/9PE9_3lu3t8 검기 투사체(이하 검기)는 캐릭터의 ObjectPoolSystem에서 생성 및 관리하고 있습니다. 게임을 시작하기 전 SkillSystem에서 검기 스킬을 DataTable의 정보를 토대로 스킬을 생성 및 초기화합니다. // SkillSystem.cpp // SkillSystem에서 DataTable의 정보를 토대로 Skill을 생성 및 초기화합니다. TArray UPRSkillSystemComponent::CreateSkillFromDataTable(UDataTable* NewSkillDataTable) { TArray NewConstructSkills; if(NewSkillDataTable != nullptr) { TArray RowNames = N..