![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bdzXCh/btsMfF3j8BT/O5dG6pkJSKnWuWBPANCVC0/img.png)
https://www.fab.com/ko/listings/b2302711-8a53-4d07-b33a-732ecba0a339위의 에셋 모델을 사용하여 캐릭터를 설정하기로 하였다 우선 코드에 필요한부분을 설정해준다. (메쉬 셋팅, 카메라 셋팅) 메쉬는 CharacterBase에서 설정해주고 카메라 관련설정은 CharacterPlayer에서 설정해줬다. CharacterBase의 생성자에 해당 모델을 불러와 Mesh를 셋팅하도록 해줬다 static ConstructorHelpers::FObjectFinder CharacterMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/StylizedArmyPackA/Soldiers_Animations/SK_Base_A_pose_ger..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bpQuUs/btsMf7x5M6e/frh4IFhtldPJuS1mjjaRO0/img.png)
회사의 권고사직으로 인해 재취업 준비를 해야하는 상황이 되어버렸따..... 유니티만 해왔기 때문에 요즘 시장의 대세인 언리얼을 공부하며 정리해보려 한다. 일단 이득우의 언리얼프로그래밍 강의를 Part1, 2, 3 까지 들었으나 역시 보고따라할때와 직접할때는 차이가 크기에... 포트폴리오 제작을 하며 다시 정리해보려한다 오늘의 목표는 프로젝트 생성하고 캐릭터가 뛰어다니게 하기 1. 프로젝트 생성하기 2. 새로운 맵 생성File/NewLevel 에서 blank를 선택하여 빈 맵을 생성한다 3. 필요한것들 기초 클래스 생성GameBase생성 : GameBase를 상속받아 SMGameBase를 생성하고 WorldSettings의 GameMode를 생성한 SMGameBase로 설정해줬다. PlayerContro..
왜 언리얼은 기본타입을 따로 지정하는가? 플랫폼 파편화. 즉, 기기들마다 같은 C++ 함수를 다르게 인식하는 이슈가 있었음. 그래서 그 이후에는 표준 규약을 만들어 문제를 해결하려했다. int형의 경우 32비트로 사용하는 플랫폼이 있고, 64비트로 사용하는 플랫이 있다. 게임의 경우 캐시 히트율이 매우 중요한데, 이렇게 플랫폼마다 데이터타입의 정의가 다르면 게임 개발에 문제를 일으킬수 있다. 즉, 애매모호한 데이터타입은 게임개발 성능을 저하시키고, 문제를 일으킬수 있다. 언리얼은 int를 사용하지않고 int32를 사용한다. bool 타입 : 크기가 명확하지 않기떄문에 헤더에서는 uint8을 사용하되, bitField를 사용하여 1비트로 사용한다. 접두사 b를 붙인다. 헤더가 아닌 cpp의 로직에서 사용할..
코딩표준이란? 프로그래밍 이름규칙, 작성방법등 코딩컨벤션, 코딩스타일이라고도 함. 언리얼 엔진은 자체적으로 코딩표준을 정했기 떄문에 언리얼엔진 코딩표준을 따라야 함 https://docs.unrealengine.com/5.1/ko/epic-cplusplus-coding-standard-for-unreal-engine/ 코딩 표준 기존에 확립된 표준 및 모범 사례를 준수하여 유지보수 가능한 코드를 작성합니다. docs.unrealengine.com 명명규칙 - 언리얼은 파스칼을 따른다. 파스칼 : 첫글자 대문자 : UnrealEngine 카멜 : 첫글자소문자 나머지대문자 : unrealEngine 스네이크 : 사이에 _사용 unreal_engine 접두사 언리얼 오브젝트 상속받는것 U를포함 Actor는 예..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c4ZNCn/btsz6Mf4fKH/UyvZqTsSzAWUA0YK33aiM0/img.png)
Unreal 개발할때 매크로 이후에 엔터를 치면 한칸 들여쓰기가 자동으로 되는데, 이를 방지하기위한 매크로인 SmartMacroIndenting을 설치하는 방법이다. VCmd설치 하단 링크의 가장 아래에 download클릭 https://vlasovstudio.com/visual-commander/index.html Visual Commander - Modern alternative to Visual Studio macros Visual Commander The freemium Visual Commander extension lets you automate repetitive tasks in Visual Studio 2022/2019/2017 and SSMS 17/2016. You can reuse ex..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b1ymFa/btqIX4ZthDs/8visvS9mTVCLnPJVSRFQ11/img.png)
언리얼 C++에서는 언리얼에서 제공하는 특수한 매크로가 있다 그중 제일 대표적이고 기본적인게 UPROPERTY매크로이다 일반적으로 C++프로그래밍에서는 포인터를 선언하면 명시적으로 객체를 소멸시켜줘야 메모리 관리에 문제가 발생하지 않는데, 언리얼 엔진에서는 객체가 더이상 사용되지 않으면 할당된 메모리를 자동으로 소멸시키는 기능을 제공한다. 이 기능을 사용하기위해 UPROPERTY 태그를 아래와 같이 포인터를 선언한 코드 윗줄에 추가해주어야한다. 위와 같이 선언한후 빌드하여 에디터의 디테일 윈도우에서 확인해보면 네이티브 컴포넌트는 C++에서 UProperty로 선언시 편집 가능합니다. 라는 말과 함께 값을 수정할수 없는 상태가 된다. 이 값을 수정 가능하게 하기 위해선 UPROPERTY 매크로 안에 Vis..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ECjRK/btquIQN7wVc/8ZQUAkkRDqXMT6IMUFMfg0/img.png)
에임 포즈를 지정하던 중, 에임오프셋을 만들고 애니메이션 블루프린트에 연결했더니 애니메이션이 이상하게 작동하게 되었다. 에임 오프셋 파일이 잘못되었는지 확인해보았지만, 에임 오프셋파일에서 미리보기로 확인했을때는 정상적으로 작동하는것을 확인하였다. 그래서 새로운 에임 오프셋 파일을 만들고, 기본 포즈만 넣어서 확인 해보았더니 에임오프셋이 추가되면 무조건 애니메이션이 이상하게 작동하는것을 확인하였고, 애니메이션 파일의 셋팅에 문제가 있는지 확인해보기로 했다. 언리얼엔진 공식문서의 에임 포즈생성문서의 18 ~ 20번의 항목에서 애니메이션 파일에대한 셋팅을 해주고있다. 내가 했던 실수는 아래처럼 BasePoseType, BasePosAnimiation을 셋팅해주지 않은 이유였다. 에임 오프셋을 사용하기 위해선 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NjmcG/btquHQtYBIK/2FNSGRPbZGJ4Qr7zN0VvH0/img.png)
캐릭터의 상태를 앉기, 일어나기 상태로 변경하기위해 기능을 추가했다. (참고로, 언리얼 엔진에서는 캐릭터가 가지고있는 캐릭터 무브먼트 컴포넌트가 Crouch(), UnCrouch()라고 앉기, 일어나기 기능을 가지고 있다.) DoCrouch()라는 함수를 만들고, Crouch가능한 상태이면 Crouch를 실행하고, 아니면 UnCrouch를 실행하도록 코드를 생성하고, 실행했지만 캐릭터가 반응하지 않았다. void AMyPlayer::DoCrouch() { UE_LOG(LogClass, Warning, TEXT("DoCrouch")); CanCrouch() ? Crouch() : UnCrouch(); } 혹시 몰라 로그도 찍어봤지만, DoCrouch함수는 잘 실행되고 있었다. 그래서 찾아봤더니, 캐릭터가 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bB8Srb/btquI2tZyA3/b0DOkmosD3MgQy1vCJ1PWK/img.png)
캐릭터에 애니메이션을 추가해주기 위해서 AnimInstance를 만들고, 만든 AnimInstance를 상속받은 애니메이션 블루프린트를 만들어서 캐릭터와 연결시켰다. 애니메이션 블루프린트에서 상태를 추가해 준 후 값을 연결시켜줬지만, 애니메이션이 실행되지 않았다. 생각해보니 애니메이션 블루프린트에서 가져오는 Speed값과 Direction값을 셋팅해주는 부분이 없기 때문이었다. AnimInstance.h 파일을 찾아보면 NativeUpdateAnimation 함수를 찾아볼수 있다. // Native update override point. It is usually a good idea to simply gather data in this step and // for the bulk of the work ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/AfNBe/btquzGsmBzW/wiWYeTw62GKidUmWxBkiE0/img.png)
플레이어의 움직임에 대해 구현하던중 마우스 포지션 Y값에 따라 위아래로의 회전을 구현하였다. 실행 해본 결과 X값에 따라 왼쪽, 오른쪽 회전은 잘 작동하지만, Y값에 따른 위아래 회전이 실행되지 않았다. 그래서 카메라 회전과 컨트롤에 대해 알아보게 되었다. 플레이어가 게임에 입장할때, 플레이어 컨트롤러와 폰을 부여받는다. 플레이어 컨트롤러는 플레이어의 컨트롤 회전을 관리하고, 폰은 캐릭터의 물리적인 상태를 관리한다고 한다. 언리얼 엔진에서 인풋 값에 따라 회전을 시킬때 사용하는 함수인 AddControllerYawInput을 열어 보면 플레이어 컨트롤러의 Yaw값을 조절하는것을 볼 수 있다. 그렇기 때문에 플레이어 컨트롤러의 회전값과 폰의 회전값을 연동할 것인지, 아닌지의 욥선이 중요해 지는 것이다. v..
- Total
- Today
- Yesterday
- C#
- 휴대용유모차
- 유니티 텍스트 하이퍼링크
- 성남돌잔치
- ngui scrollview particle
- 스토케요요
- Unreal
- 언제어디서나요요
- 직군면접
- 베이비젠요요
- particle cliping
- 값형식과 참조형식의 차이
- 내돈내산
- scrollview particle
- c언어
- 유니티 a href
- ngui 파티클
- 클라이언트 면접
- 기술면접
- ngui 스크롤뷰 파티클
- ngui 스크롤뷰
- Library/PackageCache
- 연말정산
- 유니티 개발자 면접
- UPROPERTY
- 유니티 Library
- 구글 스프레드시트 드롭다운
- 도서대출프로그램
- 연결리스트
- ngui 스크롤뷰 파티클 클리핑
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |