언리얼

언리얼 블루프린트) 캐릭터 생성, 이동 로직, 레벨 디자인

eclipse2 2026. 2. 26. 20:58

Unreal Engine

오늘은 블루프린트 클래스에서 캐릭터를 만들고 그 캐릭터를 WASD와 Space 바를 통해 조종하는 법을 배웠다. 그리고 마지막으로 나만의 레벨 디자인을 만들었다.

  1. 먼저 캐릭터를 만드려면 캐릭터 클래스를 생성한 뒤 메시를 선택한 후 투명한 캡슐의 크기와 방향(월드)과 맞춰줘야 한다.

 

2. 다음으로 캐릭터를 3인칭을 볼 것이냐 아니면 1인칭으로 볼 것이냐에 따라 스프링 암 컴포넌트와 카메라 컴포넌트의 위치를 조정해 준다.

3. 캐릭터를 조종하기 위해서는 Enhanced Input System을 사용하는 것이 방법 중에 하나이며 이것을 Input action과 Input Mapping Context를 만들어서 각 키별 이동방향에 대한 모디파이어를 설정해야 한다.

다음으로 블루프린트에서 아래와 같이 노드를 생성해 주면 된다.

Move(amended)

 


다음으로 나는 레벨 디자인을 처음으로 해봤다.

함정들을 피하며 2층에 있는 도착지로 가면 된다.

먼저 이것을 구현하기 위해 전체적인 구조를 잡았다.

구조를 다 잡은 후 게임에 주가 되는 함정 혹은 장애물들을 만들었다.

  1. 스윙 장애물

 

2. Rotating 장애물

위 장애물들을 만드는 과정에서 현재 내가 모르는 정보들을 찾아야 하는 것들이 많았고 실제로 스윙 장애물이 안 움직인다던가 너무 느리게 움직인다던가 여러 문제점들이 발생하고 해결했다.

대표적으로 스윙 장애물에 경우 부딪혀도 아무 일도 발생하지 않아 찾아보며 collision을 만들고 블루프린트로 로직을 짰다.


C/C++

반복문

별짓기 연습

#include <iostream>

int main() {
    int n = 4;

    // 상단 피라미드
    for (int i = 1; i <= n; i++) 
    {
        for (int j = 1; j <= n - i; j++)
        {
            std::cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++)
        {
            std::cout << "*";
        }
        std::cout << std::endl;
    }
	// 하단 피라미드
    for (int i = n - 1; i >= 1; i--) 
    {
        for (int j = 1; j <= n - i; j++)
        {
            std::cout << " ";
        }
        for (int j = 1; j <= 2 * i - 1; j++)
        {
            std::cout << "*";
        }
        std::cout << std::endl;
	}
  

    return 0;
}

 

배열 연습

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<double> scores(n);
    double maxScore = 0;

    for (int i = 0; i < n; ++i) {
        cin >> scores[i];
        if (scores[i] > maxScore) {
            maxScore = scores[i];
        }
    }

    double sum = 0;
    for (int i = 0; i < n; ++i) {
        scores[i] = (scores[i] / maxScore) * 100.0;
        sum += scores[i];
    }
    cout.precision(6);
    cout << fixed;
    cout << sum / n << endl;

    return 0;
}

 

함수 연습

#include <iostream>
using namespace std;

int add(int a, int b) 
{
    return a + b;
}
int subtract(int a, int b) 
{
    return a - b;
}
int multiply(int a, int b)
{
    return a * b;
}
int divide(int a, int b)
{
    if (b == 0) {
        cout << "Error: Division by zero is not allowed." << endl;
        return 0; // Return 0 or handle as needed
    }
    return a / b;

}



int main() 
{
	int a, b;
    cout << "Enter two integers for calculation: ";
    cin >> a >> b;
	cout << "Addition: " << add(a, b) << endl;
	cout << "Subtraction: " << subtract(a, b) << endl;
	cout << "Multiplication: " << multiply(a, b) << endl;
	cout << "Division: " << divide(a, b) << endl;
    return 0;
}