OSWorlds - 게임 블로그 📌 게임 프로그래밍 📌 게임소식 🔑 로그인 📝 회원가입

Blueprint

게임 프로그래밍

언리얼 엔진 보스 Grab 구현 중 발생한 문제 해결|Motion Warping과 액션 상태 초기화

보스가 플레이어를 잡아 들어 올리는 Grab 시스템을 구현하면서 두 가지 문제가 발생했습니다. 첫 번째는 보스와 플레이어가 서로 다른 위치에서 Grab 애니메이션을 재생하는 문제였고, 두 번째는 플레이어가 공격이나 스킬을 사용하던 중 Grab에 걸렸을 때 기존 액션 상태가 정상적으로 종료되지 않는 문제였습니다. 이번 글은 일반적인 Grab 시스템 제작 튜토리얼이 아닙니다. 실제 프로젝트에서 발생한 증상과 확인 과정, 그리고 […]

언리얼 엔진 Line Trace Sphere Trace Box Trace 차이와 사용 방법
게임 프로그래밍

언리얼 엔진 Line Trace, Sphere Trace, Box Trace 차이와 사용법 총정리

언리얼 엔진에서 공격 판정, 상호작용, 적 탐지 같은 기능을 만들다 보면 자주 등장하는 것이 Trace입니다. 이전 Collision 글에서 Box Collision이나 Sphere Collision처럼 실제 Collision Component를 이용해 충돌을 감지하는 방법을 살펴봤다면, Trace는 필요한 순간에 특정 방향이나 범위를 검사해서 어떤 Actor가 있는지 즉시 확인하는 방식이라고 생각하면 쉽습니다. 예를 들어 총을 발사했을 때 앞에 적이 있는지 확인하거나, 플레이어

게임 프로그래밍

언리얼 엔진 Accessed None 오류 원인과 해결 방법 총정리

언리얼 엔진에서 블루프린트 작업을 하다 보면 한 번쯤 반드시 만나게 되는 오류가 있습니다. 바로 **Blueprint Runtime Error: Accessed None**입니다. 처음 이 오류를 보면 블루프린트 자체가 잘못됐거나 엔진에 문제가 생긴 것처럼 느껴질 수 있습니다. 하지만 대부분은 생각보다 단순합니다. 사용하려는 Actor, Component, Widget 등의 Object Reference가 비어 있는 상태에서 해당 객체의 변수나 함수를 호출했기 때문​입니다. 저 역시

게임 프로그래밍

언리얼 엔진 Damage System 만들기|Apply Damage 사용법

캐릭터가 공격을 받으면 체력이 감소하고, 체력이 0이 되면 사망하는 기능은 액션 게임에서 가장 기본적인 시스템입니다. 처음에는 공격 블루프린트에서 상대 체력 변수를 직접 가져와 빼는 방식으로 구현하기 쉽지만, 프로젝트가 커지면 공격마다 체력 감소 로직이 반복되고 플레이어와 적의 처리도 뒤섞이게 됩니다. 언리얼 엔진은 이러한 문제를 줄일 수 있도록 Apply Damage, Event AnyDamage, Damage Type 같은 기본 데미지

게임 프로그래밍

언리얼 엔진 Event Dispatcher 사용법|블루프린트 이벤트 전달하기

게임을 만들다 보면 하나의 사건을 여러 블루프린트에 동시에 알려야 하는 상황이 자주 생깁니다. 보스를 처치했을 때 문이 열리고, 전투 음악이 멈추며, 퀘스트 UI가 갱신되는 상황이 대표적인 예입니다. 이 기능들을 보스 블루프린트에서 직접 하나씩 실행하도록 만들 수도 있지만, 연결되는 기능이 늘어날수록 보스가 문과 UI, 사운드 시스템을 모두 알고 있어야 합니다. 프로젝트가 커지면 블루프린트 사이의 의존성이 복잡해지고

게임 프로그래밍

언리얼 엔진 Event Tick을 남발하면 안 되는 이유

언리얼 엔진 블루프린트를 배우다 보면 가장 먼저 만나게 되는 이벤트 중 하나가 Event Tick입니다. 별도의 호출 없이 계속 실행되기 때문에 캐릭터 상태를 확인하거나 오브젝트를 움직일 때 무척 편리해 보입니다. 하지만 모든 기능을 Event Tick에 연결하기 시작하면 프로젝트가 커질수록 성능이 떨어지고 블루프린트 구조도 복잡해질 수 있습니다. 그렇다고 Event Tick을 무조건 사용하면 안 된다는 뜻은 아닙니다. 중요한

위로 스크롤