본문 바로가기

분류 전체보기

(101)
6번 과제(회전 발판과 움직이는 장애물 퍼즐 스테이지) 필수 과제 (기본 요구 사항)필수 과제 1번 - 서로 다른 Actor 클래스 2개 이상 구현각각 StaticMeshComponent를 가지며, 맵에 배치 가능한 형태여야 합니다.두 클래스는 서로 다른 동작 로직을 수행해야 합니다.필수 과제 2번 - Tick 함수 기반 동적 Transform 변경회전 기능Tick(float DeltaTime)에서 AddActorLocalRotation() 사용하여 매 프레임 회전 처리이동 기능Tick(float DeltaTime)에서 위치를 변경하여 왕복 이동 구현MoveSpeed, MaxRange, StartLocation 등을 고려해 일정 범위를 벗어나면 이동 방향을 반전시키는 로직 구성프레임 독립성이동/회전 시 반드시 DeltaTime을 활용하여 하드웨어 성능에 관계..
언리얼C++ 3일차(리플렉션 시스템) 리플렉션 시스템은 C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장해서 에디터나 블루프린트에서 활용할 수 있게 만들어주는 시스템이다.C++에 있는 여러 멤버 변수, 함수 등을 에디터와 블루프린트에서 직접 설정, 호출이 가능하도록 한다.매개변수를 코드에서만 변경하는 것이 아니라, 에디터에서 바로 조정 (슬라이더나 숫자 입력)하여 반복 테스트를 빠르게 진행할 수 있다. 언리얼에서 C++로 액터를 생성하면 이미 클래스 선언에 리플렉션 관련 매크로가 포함되어있다.#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Item.generated.h"DECLARE_LOG_CATEGORY_EXTERN(LogJi..
언리얼C++ 2일차(트랜스폼) 트랜스폼위치(Location), 회전(Rotation), 크기(Scale)을 합쳐서 트랜스폼(Transform)이라고 한다.이 트랜스폼에는 x(빨강), y(초록), z(파랑) 값이 있는데 이를 조정하여 위치, 회전, 크기 값을 조절할 수 있다.좌표는 월드 좌표와 상대 좌표가 있다.월드 좌표는 레벨 전체에서의 절대적인 위치, 회전, 크기 이며 월드의 원점(레벨 좌표 0,0,0)이 기준점이 된다.상대 좌표는 컴포넌트 사이에서 사용되며 부모 컴포넌트가 기준점이 된다. void AItem::BeginPlay(){ Super::BeginPlay(); SetActorLocation(FVector(300.0f, 200.0f, 100.0f)); SetActorRotation(FRotator(0.0f, 90.0f, 0...
언리얼C++ 2일차(UE_LOG, 라이프 사이클 함수) UE_LOG UE_LOG(LogTemp, Warning, TEXT("My Log!"));UE_LOG(로그 카테고리, 로그 수준, 출력할 메세지) 로 로그를 출력할 수 있다.로그 카테고리는 로그를 구분하기 위한 이름이다. 여기서는 LogTemp라는 엔진에서 기본 제공하는 임시 카테고리를 사용했다.로그 수준은 로그의 중요도와 색상을 나타내는데 Warning은 노란색, Display는 흰색, Error는 빨간색 등 다양하게 있다.출력할 메세지는 TEXT매크로를 사용하여 유니코드로 만들어야한다. 형식 지정자(%d, %f 등)를 사용해서 변수 값도 출력 가능. 컴파일 후 액터를 뷰포트에 배치하고 실행해보면 Output Log에 My Log!가 출력된다.여기서 필터를 사용해서 원하는 카테고리의 로그만 볼 수 있다...
언리얼C++ 2일차(C++ 파일 삭제, C++로 컴포넌트 추가하기) 언리얼에서 C++ 파일 삭제1. Solution Explorer에서 Remove(Del)를 하고 Save All(ctrl+shift+s)로 저장한다. 이 작업은 솔루션에서만 제거를 하고 아직 디스크의 파일(물리 파일)은 남아있다.2. 프로젝트 폴더에서 방금 Remove했던 .h, .cpp파일을 직접 삭제를 한다.(물리 파일 삭제)3. VS로 돌아가서 빌드를 한 후 다시 언리얼 에디터를 실행하면 해당 클래스가 컨텐츠 브라우저에서도 사라진 것을 확인할 수 있다.만약 이 과정을 무시하고 언리얼 에디터에서만 삭제하거나 솔루션에서 Remove하지 않고 폴더에서 파일을 삭제하면 빌드 에러 또는 클래스 미삭제 같은 문제가 발생한다.항상 에디터 종료 -> 솔루션 Remove -> 물리 파일 삭제 -> VS 빌드 -> ..
언리얼 엔진 C++ 공부 1일차(폴더, 빌드, 라이브코딩, 빌드 문제 복구하기) 솔루션 구조 내 주요 폴더언리얼엔진으로 C++을 열면 위와 같이 5개의 폴더가 기본적으로 있다. Engine 폴더언리얼 엔진 자체 소스 코드와 리소스가 담긴 폴더.에디터 작동, 엔진 코어 관련 코드가 포함되어 있지만 초급 단계에서는 수정할 일이 없다. Games 폴더(중요!)직접 만든 프로젝트 코드가 모두 들어있는 폴더.내부에는 Source, Config, .uproject 파일 등이 있으며, C++로 작성하는 게임 로직을 이 폴더에서 가장 많이 다루게 된다. Programs 폴더엔진 동작에 필요한 유틸리티 프로그램이나 서버 모듈이 담겨있는 폴더.초급 단계에서는 볼 일이 없다. Rules 폴더엔진과 게임 등 각 모듈의 빌드 규칙을 정의해 놓은 파일이 모여있는 폴더. 모듈 의존성, 플러그인 활성화 여부, ..
팀 프로젝트(텍스트 기반 RPG 게임 제작 프로젝트) 장르 : 콘솔 기반 텍스트 RPG개발 목적 : C++ 학습 및 팀 협업 과제 수행개발 기간 : 25년 09월 04일 ~ 25년 09월 11일(1주일) 팀 프로젝트로 텍스트 RPG 게임을 제작을 했다.처음 하는 팀 프로젝트라 협업을 하기 위해 팀원끼리 변수, 함수의 이름을 어떻게 선언할건지(매개변수를 제외한 모든 이름을 파스칼 표기법으로 하기로 함)와 깃허브 사용법을 익히게 됐는데 초반에는 깃허브 쪽에서 충돌도 많이 발생하고 문제가 좀 있었지만 계속 사용하니 문제가 발생하지 않고 어느정도 익숙해졌다.조원이 6명이여서 기능을 6가지(캐릭터, 몬스터, 아이템, 상점, 진행(로그), 배틀) 로 나누어서 각 담당을 했는데 내가 담당한 것은 아이템 이다.필수 기능1. 캐릭터 생성 및 관리 원하는 이름으로 캐릭터를 ..
프로그래머스(문자열 다루기 기본) 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 입출력 예 s return "a234" false "1234" true1. 문자열의 길이 4, 6을 확인2. 문자열 길이가 4, 6일 때 s의 문자열을 순회하여 숫자인지 확인(아스키 코드를 이용함)3. s의 원소(문자)가 숫자면 1을, 아니면 0을 곱함(true = 1, false = 0 을 이용함) #include #include ..