개발 161

언리얼 엔진 심화 2주차 - 컨테이너와 포인터

들어가기 앞서좋은 코드란?긴 매개변수 목록매개변수가 많으면 함수를 가독성이 떨어진다.필요한 정보만 간결하게, 너무 길어지면 구조체로 정리한다.전역 데이터의 남용디버깅과 유지보수가 복잡해짐Subsystem을 이용하여 분리하자!Subsystem은 생명주기가 있는 게임 인스턴스 Subsystem의 장점접근 경로가 명확하다. 관련 함수 호출부를 찾으면 문제 부분을 확인 가능하다.캡슐화가 강제된다.맵이 바뀌거나 게임이 꺼지면 데이터를 초기화할 필요 없이, 새 인스턴스를 생성하면 된다.Subsytem 공식 문서: https://dev.epicgames.com/documentation/ko-kr/unreal-engine/programming-subsystems-in-unreal-engine// 언리얼 Subsyste..

언리얼 게임 개발 - 차량 에셋에 바퀴 굴러가는 애니메이션 추가하기

지금까지 배운 바로는 스켈레탈 메시란 인간형 캐릭터에만 적용하는 것이었다. 그런데 구매한 에셋을 살펴보니 자동차에도 스켈레탈 메시가 있어서 이는 무슨 용도인지 궁금해져서 알아보았다. 스켈레탈 메시를 열어보면 차량의 경우 문, 창문, 바퀴로 이루어진 것을 알 수 있다. 즉, 이것을 조정하여 바퀴를 굴러가게 하거나, 문을 열 수 있다. 바퀴에 애니메이션 적용스켈레탈 메시의 경우 애니메이션이 없을 때 코드로 직접 뼈(Bone)를 움직여서 애니메이션을 창조할 수 있다.트럭 바퀴처럼 회전만 하는 경우, 애니메이션 블루프린트만으로 움직임을 쉽게 만들 수 있다. 일단 애니메이션 블루프린트를 하나 만든다. 자동차 모양 스켈레톤을 선택해준다. SF 팩이라서 호버 차량같은 것도 있지만 간단한 움직임만 적용하고 싶어..

언리얼 C++ - Enhanced_input_System을 활용한 입력 매핑 구현하기

플레이어 컨트롤러는 입력을 받아서 Player Class에서 전달만 하고, 결과는 Player Class에서 처리한다. 플레이어 컨트롤러의 역할입력 처리 - Enhanced Input System카메라 제어 로직UI와의 상호작용드래그 앤 드롭 또는 버튼 누르기 등Possess/ UnPossess 플레이어 컨트롤러 만들기PlayerController를 만든다. 이제 블루프린트로 래핑을 한번 해준다.게임모드에서 바꾸면 프로젝트 세팅에서도 자동으로 연동되어 적용된다. Enhanced Input System원래 인풋 시스템이 있었는데, 향상된 인풋 시스템이 새로 나오면서 대체되었다.Input Mapping System(IMC)IA를 관리하는 시스템Input Action(IA)어떤 동작을 추상화한 것.점프 ->..

언리얼 C++ - Character 클래스를 이용한 캐릭터 구현하기

GameMode 클래스게임매니저 클래스처럼 게임의 총괄 관리자같은 역할을 한다플레이어 캐릭터 관리 - Pawn 클래스 or Character 클래스PlayerController 클래스를 캐릭터에 빙의시킴게임 규칙 관리 - 로직(함수)GameState 클래스와 PlayerState 클래스 관리GameState: 게임의 전역 데이터, 예를 들어 점수 등을 관리PlayerState: 개별 캐릭터마다의 데이터. 보통 멀티 게임에서 사용게임모드베이스와 게임모드의 차이게임모드베이스단순한 게임용멀티플레이 로직이 전혀 없음초심자용제공하는 기능이 많지 않음게임모드멀티플레이 기능 제공GameState, PlayerState 기능 연동되어 있음GameMode로 클래스를 만들어준다. 이후, 이를 상속받아 블루프린트 클래스를 ..

TA 코스 2주차 과제 - 마법 구체 만들기

수업시간에 배운 내용을 바탕으로 머티리얼을 만들어 보았다. 살짝 마법같은 효과가 적용된 웅크린 새 모양 구체를 만들고 싶어서 일단 텍스처를 그렸다. 아무래도 구에 적용하는 텍스처는 그리기가 어려워서, 일단 텍스처를 입혀놓고 이미지를 수정해가면서 확인하였다. 그릴 때 약간 오목렌즈처럼 된다고 생각하고 그려야 구에 제대로 그려지는 것 같다. 굴러가는 느낌을 넣고싶어서 Panner를 넣어보았으나 구에서는 텍스처가 조금 왜곡되는 부분이 보였다. 불꽃은 잔상 효과가 괜찮아보여서 나중에 활용할 수도 있을 것 같다. Time 노드와 Sine 노드를 이용해서 반짝거리는 구체가 되도록 조정하였다. 블루프린트로는 속도가 천천히 증가하다가 빠르게 증가하도록 만들었는데, 머티리얼에도 적용해볼 수 있을 것 같다.

언리얼 내배캠 과제 6번- 회전 발판과 움직이는 장애물

기본 기능서로 다른 Actor 클래스 2개 이상 구현[ ] C++ Actor 클래스 최소 2개 생성각 StaticMeshComponent 포함 맵에 배치 가능한 형태여야합니다.두 클래스는 서로 다른 동작 로직(회전용 / 이동용 등) 수행해야합니다.회전 기능 (Rotating Actor)ick(float DeltaTime) 에서 AddActorLocalRotation()로 매 프레임 회전 적용이동 기능 (Moving Platform Actor)Tick(float DeltaTime)에서 위치를 변경하여 왕복 이동 구현StartLocation(시작 위치) 저장/기준점으로 사용MoveSpeed(이동 속도) 적용MaxRange(왕복 범위) 기준으로 이동 제한프레임 독립성이동/회전 시 반드시 DeltaTime 을 ..

TA 코스 2주차 정리

머티리얼이란?재질을 말하며, 언리얼에서는 기본 컬러, 금속 질감, 거칠기 등으로 구성되어 있다. (Material Domain: Surface 기준)에서 가장 자주 쓰이는 기본 핀들은 렌더링 방식인 PBR(Physically Based Rendering)을 쓴다.1. 머티리얼 기본 핀의 구조와 역할🎨 시각적 속성 (Appearance)Base Color (색상): 물체의 고유 색이다. 빛의 반사나 그림자가 포함되지 않은 '순수한 색(Albedo)' 데이터여야 한다.주의: 금속(Metallic)인 경우 이 값은 반사되는 빛의 색상이 되고, 비금속인 경우 확산되는 색상이 된다.Emissive Color (자체 발광): 물체 스스로 빛을 내는 정도. 1보다 큰 값을 입력하면 Bloom 효과와 함께 주변을 밝..

TA 코스 1주차 과제 - AI로 3D 모델링 생성 후 언리얼에 적용하기

모델링 생성용 AI 이미지 만들기우선 내가 만들고자 하는 모델링의 이미지를 T 또는 A 포즈로 만든다. 나는 내 러프 그림을 기반으로 그림의 디테일을 업그레이드하고 모델링용으로 바꿔달라고 하였다. 모델 생성유료 모델 생성무료 모델 생성 나노바나나로 생성한 그림이 마음에 들어서 최대한 구현을 해보려고 했으나 이 미모를 구현하려면 유료 모델 사용하는 것밖에 답이 없는 듯했다. 훈위안, 메시 AI, 트리포를 다 써봐도 결국 최신 버전으로 만든 게 가장 마음에 들었다. 하지만 그렇다고 연습용으로 한달 구독을 할 순 없었다. 결국 무료 모델 사용해서 만든 것에 만족했다. Meshy의 텍스처 수정 기능 참고로 메시 AI에서는 텍스처를 브러시로 직접 칠할 수있다. 하지만 적용은 유료 기능이기에 나같은 경우 열심..

언리얼 C++ - 리플렉션 시스템 활용

UCLASS, UFUNCTION, UPROPERTY 사용 예시// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" // 언리얼 엔진의 기본 타입#include "GameFramework/Actor.h" // 액터에 대한 정보를 가지고 있는 헤더파일#include "Item.generated.h" // 리플렉션 시스템에 관련한 헤더 파일UCLASS() // 리플렉션 시스템에 등록해주는 키워드. // 비워두더라도 (Blueprintable, BlueprintType)이 자동적으로 들어가있으며 블루프린트에서 상속이 가능하고 NotBlueprintable이라고 ..

언리얼 C++ - Tick 함수로 Actor의 Transform 조정하기

언리얼에서는 왜 물체 rotation에 Roll, Pitch, Yaw라는 용어를 사용할까?👉 비행기 기준으로 3축 회전을 정의한 용어라서👉 Roll / Pitch / Yaw라고 부름✈️ 1️⃣ 어디서 나온 말이냐항공공학에서 시작됨.👉 비행기가 공중에서 움직일 때:좌우로 기울고위아래로 들리고방향을 바꾸고👉 이걸 3가지 회전으로 정의한 것!🎯 2️⃣ 각각 의미🔹 Roll (롤)👉 “좌우로 기울기”날개 기준 회전옆으로 눕는 느낌왼쪽으로 기울기 / 오른쪽으로 기울기 🔹 Pitch (피치)👉 “앞뒤로 들기”기수(코) 위/아래위로 상승 / 아래로 하강 🔹 Yaw (요)👉 “좌우 방향 회전”좌우로 방향 틀기왼쪽으로 턴 / 오른쪽으로 턴 Transform 속성 이해하기Actor와 TransformA..