게임엔진

    [Unity] 트랜스폼을 이용해서 AI 만들기

    Look At을 이용하면 게임 오브젝트의 앞 방향이 Look At에서 지칭하는 오브젝트를 바라본다. Transform 형식의 변수를 이용하고 transform.LookAt(Transform 변수)를 이용해 변수 오브젝트의 위치를 바라보라고 명령을 내리게 된다. 다른 메쉬에 적용했을 시 출처 : https://young-94.tistory.com/13

    [Unity] 키보드와 마우스 입력받기

    1. GetAxis, GetAxisRaw InputManager에 입력된 키를 누를 때, 값을 반환한다. 이때, 반환되는 값은 -1 ~ 1사이가 반환된다. nagative button을 누르면 음수가, positive button을 누르면 양수가 반환된다. 아무것도 누르지 않는다면 0이 반환된다. 물체를 이동시키고 싶을 때 사용한다. GetAxis() -1 ~ 1까지의 실수를 반환 GetAxisRaw() 버튼을 눌렀을 때 1, -1을 반환. 그렇지 않다면 0을 반환 2. GetButton InputManager에 입력된 키를 누를 때, 참, 거짓을 반환한다. 키를 눌렀을 때는 true를 반환, 그렇지 않다면 false를 반환한다. GetButton() 키를 누르는 시간만큼 true를 반환 GetButto..

    [Unreal] 클래스 블프 및 메쉬, 텍스처 등 로딩 Finder

    ConstructorHelpers 클래스 내에 존재하는 함수 모든건 생성자 내부에서 이루어져야됨. BeginPlay 절대 x 파라미터는 TEXT형이며 쌍따옴표 안에 해당 경로가 들어가야 한다. 항상 /Game 으로 시작 클래스 로딩 FClassFinder // 클래스는 끝에 _C 접두어를 붙어줘야됨. 아래는 예시 auto BP_Actor = ConstructorHelpers::FClassFinder(TEXT("/Game/Actors/TestActor.TestActor_C")); 또는 아래와 같이 가능 ConstructorHelpers::FClassFinder BP_ACTOR(TEXT("")); 클래스는 TSubclassOf 타입임 즉 UClass, 항상 Succeed 함수로 널이 아닌지 체크 TSubcl..

    [Unity] 입력 바인딩 시스템 만들기

    유니티의 입력 시스템 유니티에는 2가지 Input System이 있다. 첫 번째는 Input.Get~ 꼴의 메소드를 이용해 이번 프레임에 해당 입력이 있었는지 검사하는 레거시 시스템 두 번째는 2019년 소개된 New Input System. New Input System을 사용하려면 패키지 매니저에서 Input System을 설치하고, 프로젝트 세팅에서 Active Input Handling을 지정하고, InputAction 윈도우에서 Action Map, Action, Property를 설정하고, New Input System을 사용할 게임오브젝트에 PlayerInput 컴포넌트를 넣고, 이제 스크립트에서 콜백 메소드를 작성해서 입력을 처리한다. 그리고 여기서 가장 중요한 런타임 바인딩 변경 기능. ..

    [Unity] 프러스텀과 오클루전 컬링 (Frustum & Occlusion Culling)

    프러스텀 컬링 (Frustum Culling) 카메라의 뷰 프러스텀(View Frustum) 영역 밖의 오브젝트들은 렌더링하지 않는 것 따로 설정하지 않아도 유니티 내에서 기본적으로 적용된다. 오클루전 컬링 (Occlusion Culling) 다른 오브젝트에 가려진 오브젝트들은 렌더링하지 않는 것 [Window] - [Rendering] - [Occlusion Culling] Occlusion Culling 윈도우를 통해 설정할 수 있다. 사전 준비 오클루전 컬링의 대상이 될 오브젝트들은 게임 내에서 움직이지 않아야 한다. 대상 게임오브젝트들을 Occluder Static 또는 Occludee Static으로 설정한다. Occluder : 다른 오브젝트를 가리거나 가려질 오브젝트 Occludee : Oc..

    [Unreal] 멀티플레이 개념잡기 Replicated

    정의 일반적인 게임들은 Steam에 연동하는 등의 플랫폼 작업이 뒤따르거나, DB에 현재 상태의 값을 저장하는 등 서버로서 필요한 작업이 더욱 많다. 다만 이러한 부분은 일단 제쳐두고 별다른 save data 없이 단판 게임으로서 멀티플레이 게임을 어떻게 만들 것인지 부터 생각해보자. ​ 개인적으로는 dedicated server를 연습하기 위해 멀티플레이 개념을 잡고 있으므로 리슨 서버(listen server)에 대해서는 별도로 다루지 않는다. ​ 참고로 Editor에서 dedicated server를 이용해 여러 클라이언트를 띄우려면 아래와 같이 설정하면 된다. Replicated 속성 적용하기 기본적으로 위의 그래프를 보면 replicated 속성은 아래 구조체에 적용할 수 있다. - GameSt..

    [Unreal] 디버깅용 드로워 이용 방법 (Draw Debug)

    Debug Draw Unreal engine 개발 과정에서 화면상에 원하는 도형을 그려서, 디버깅을 수월하게 도와주는 함수들에 대한 예제이다. DrawDebugHelpers.h 헤더파일 내에 구현 되어있다. Draw Debug #include "DrawDebugHelpers.h" ... void Examples::DebugDrawExample(UWorld* World) { FVector StartOffset = FVector(0, 0, 200); FVector LocationOne = FVector(0, 0, 600) + StartOffset; FVector LocationTwo = FVector(0, -600, 600) + StartOffset; FVector LocationThree = FVector..

    [Unreal] UI(위젯)에서 메인 캐릭터 가져오기

    UUserWidget 클래스 내에 연관된 플레이어 캐릭터를 가져오는 함수가 존재한다. T같은 경우엔 미리 캐스팅해서 반환해준다는 점이 다르다. FLocalPlayerContext 구조체 변수에 의해 가져오게 된다. // 템플릿 함수 캐스팅해서 반환한다 template T* GetOwningPlayerPawn() const { return Cast(GetOwningPlayerPawn()); } // 플레이어 폰을 가져오는 함수 APawn* UUserWidget::GetOwningPlayerPawn() const { if (APlayerController* PC = GetOwningPlayer()) { return PC->GetPawn(); } return nullptr; } // 플레..

    [Cocos] 이미지 삽입하는 방법

    Resources 폴더 아래에 사용하고자 하는 리소스들을 추가해야한다. CreateScene.h #pragma once #include "cocos2d.h" class GraphicsScene : public cocos2d::Layer { // 레이어 생성 시 필수 CREATE_FUNC(GraphicsScene); public: // 씬 생성 static cocos2d::Scene* createScene(); // 이미지 초기화 virtual bool init(); }; CreateScene.cpp #include "GraphicsScene.h" USING_NS_CC; cocos2d::Scene* GraphicsScene::createScene() { auto scene = Scene::create();..

    [Cocos] 설치 방법

    Cocos2D-x를 다운로드. CMake를 다운로드. 파이썬을 다운로드 (2 버전) NDK 다운로드 SDK 다운로드 1. Cocos2d-x 폴더에서 setup.py 실행해서 NDK와 SDK 경로 지정 후 재부팅. 2. CMake와 Python 2버전을 설치한다. 항상 msi 파일 아래와 같이 나와야한다. 파이썬은 내려가다보면 X마크가 있을텐데 이를 클릭하고 첫번째 버튼 클릭해서 위에것들이랑 동일하게 적용. 아래와 같이 나와야한다. 3. 폴더 생성 후 cmd에서 아래와 같이 커멘드를 입력한다. // 아래는 생성할 폴더의 경로 cd /d E:\0_Projects\Cocos\2DRogueLike // 프로젝트 생성하는 커멘드 cocos new Test -p com.{ShovelingLife}.2DRogueLi..