본문 바로가기

분류 전체보기

(573)          글쓰기    
AJ 블로거 https://blog.naver.com/coeternel/222731481118 언리얼엔진 - 유저 인터페이스 , C++ 220513 금 개발일지 3 선생님 C++ 공부할때 다른 방법으로 세번정도 공부하심 같은 방법이 아닌 다른 방법... blog.naver.com https://blog.naver.com/coeternel present for you : 네이버 블로그 * Good Taste Make Art Out of Technology blog.naver.com
3.1-4 플레이어 이동 처리하기 교재와는 다르게 이동을 위한 입력은 EnhancedInput으로 처리하겠습니다. ThirdPersonCharacter를 임포트할때 이미 입력도 같이 왔습니다. 이걸 사용하겠습니다. 새로운 인핸스드입력은 개별 인풋액션을 조합해서 원하는 Input Mapping Context를 만들수 있습니다. 우클릭후 다음메뉴에서 만들수도 있습니다. 우리는 그냥 있는것 사용하겠습니다. EnhancedInput을 사용하기 위해 TPSProject.Build.cs에 EnhancedInput 모듈을 추가해주어야 합니다. PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "EnhancedInput" })..
3.1-2 3인칭카메라 붙이기 3인칭 카메라를 붙이기 위해 블루프린트에서 SpringArm과 Camera 컴포넌트를 추가할수도 있지만 여기서는 바로 C++에서 추가하겠습니다. 우선 필요한 스프링암, 카메라 컴포넌트 변수들을 추가해줍니다. TPSPlayer.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "TPSPlayer.generated.h" UCLASS() class TPSPROJECT_API ATPSPlayer : public ACharacter { GENERATED_BODY() ... //추가 public: UPROPERTY(VisibleAnywhere, Category = Camera) class USpringArmCom..
3.1-3 플레이어 메시 적용 BP_TPSPlayer를 열어보면 4개의 컴포넌트가 이미 포함되어 있습니다. Capsule Component : 콜리전 담당 Arrow : 방향을 나타내는 화살표 Mesh : 외관을 표시하는 메시 Character Movement : 이동과 물리시뮬레이션을 담당 ThirdPerson캐릭터 불러와서 적용시키기 컨텐트드로워 +Add후 다음과 같이 ThirdPerson AddtoProject를 누르면 블루프린트만 임포트됩니다. 프로젝트만들때 선택하면 C++클래스까지 포함됩니다. 이제 Mesh카테고리에서 Skeletal Mesh Asset을 클릭해서 SK_Mannequin을 선택할수 있습니다. 선택후 뷰포트에는 인형이 보이는데 떠 있고 화살표 방향을 보고 있지 않습니다. 트랜스폼을 Z로케이션 로테이션을 -90으..
3.1-2 플레이어 생성하기 - 게임모드 설정 카메라제어및 애니메이션을 공부하기 위해 FPS보다 TPS로 제작합니다. 부모클래스를 Character로 하는 Public C++클래스를 만듭니다. 이름은 TPSPlayer 입니다. Visual Studio로 이동하면 새로운 파일이 생겼으므로 리로드 하라고 합니다. 언리얼과 Visual Studio는 서로 다른 환경이라 서로 얽혀있습니다. 이 둘을 잘 이해하셔야합니다. 언리얼의 Character 클래스는 이동과 애니메이션을 담당해주는 클래스입니다. 폰클래스를 상속받습니다. Content폴더밑에 Blueprints 폴더를 만들고 방금만들 TPSPlayer를 부모로 BP_TPSPlayer를 만들어 줍니다. 게임모드 클래스 정보 수정하기 TPSProjectGameModeBase를 부모로 블루프린트를 만들고 이름..
3.1 프로토타입 버전 - 로그카테고리 3.1-1 TPS 프로젝트 생성하기 Create - Game - Blank - C++ - 스타터컨텐츠 (ThirdPerson템플릿은 나중에 그래픽만 임포트 할 예정) 선택하고 프로젝트명을 TPSProject로 합니다. 이대로 이름을 만들어야 예제 파일을 수정없이 사용가능합니다. Source-TPSProject폴더로 이동 Public/Private 폴더를 만들고 TPSProject.Build.cs파일만 빼고 h는 퍼블릭, cpp는 private폴더로 이동시켜줍니다. 파일 구조를 만졌으므로 Visual Studio가 재구성할수 있도록 TPSProject폴더의 프로젝트명 + .uproject위를 우클릭후 Visual Studio 프로젝트 파일을 새로 만듭니다. 만들어진 TPSProject.sin 파일을 더블클..
델리게이트 UPROPERTY() class UABAnimInstance* ABAnim; 앞서 같은 애니메이션을 중복플레이를 방지하기 위해 플레이중임을 체크했는데 이보다는 애니메이션이 끝나면 자동으로 폰에게 알려주는 편이 더 효과적이다. 언리얼이 제공하는 델리게이션기능을 사용해서 구현할 수 있다. 델리게이션이란 보편적으로 특정 객체가 해야할 로직을 다른 객체가 대신 처리할 수 있도록 만드는 보편적인 개념이다. A가 B에게 작업명령을 내리고 자신을 등록후 끝나면 A에게 알려주는 설계방식이다. 애님 인스턴스에는 애니메이션 몽타주 재생이 끝나면 발동하는 OnMontageEnded라는 델리게이트를 제공한다. 어떤 언리얼오브젝트라도 UAnimMontage * 인자와 bool 인자를 가진 멤버함수를 가지고 있다면, 이를 OnM..
애니메이션 시스템 활용 - 애니메이션 몽타주 캐릭터가 공격 입력을 누를때 마다 연속된 모션으로 공격하도록 애니메이션 기능을 구현해 본다. 스테이트 모신을 사용해 구현 가능하지만 설계가 복잡해 진다. 언리얼엔진은 스테이트 머신의 확장없이 특정 상황에서 원하는 애니메이션을 발동시키는 애니메이션 몽타주라는 기능을 제공한다. 이를 이용해 콤보공격을 구현하겠다. 애니메이션 폴더위를 우클릭하고 Animation Montage를 선택하고 원하는 스켈레톤을 선택하거나 만들고 싶은 스켈레톤을 열어 Create Asset 에서 선택해도 된다. 에디터가 열리면 기본으로 Default라는 이름의 섹션이 있다. Detail에서 이름을 Attack1으로 변경하 오른쪽 Asset Browser에서 WarriorAttack1 2 3 4를 끌어다 놓는다. 자동으로 엇갈리면서 배..
점프의 구현 GrounToJump 조건 Jump to JumpIdle조건 JumpIdel to JumpEnd 조건 JumpEnd to Ground조건 트랜지션 조건이 필요없는 경우 Transition Category에서 Auto Rule Based On Sequence Player in State를 체크하면 된다.
스테이트 머신 제작 기계가 반복해야 하는 동작을 스테이트로 정의하고 지정된 스테이트의 동작을 반복 수행할 수 있다 캐릭터가 반복해서 재생해야 할 애니메이션 동작을 애니메이션 블루프린트 스테이트 머신이 처리하도록 한다. 애님 그래프의 빈 공간을 우클릭해 스테이트 머신 새로 추가 클릭 이름을 BaseAction으로 지정 스테이트 머신을 더블 클릭하고, 머신 편집 윈도우에서 우클릭->스테이트 추가 Ground로 이름 변경 시작 노드와 추가한 스테이트를 트랜지션으로 연결 트랜지션: 시작->목적 드래그 시 생성되는 단방향 화살표 서로 다른 스테이트끼리 이동이 가능하도록 연결 추가한 스테이트를 더블 클릭하고 해당 스테이트의 애님 그래프 제작. Blend Poses by bool은 조건에 따라 2가지 애니메이션을 선택해 출력해준다. 스..
[애니메이션시스템] 폰과 데이터 연동 게임을 플레이하면서 실제 폰의 속도에 따라 다른 애니메이션을 재생하기 위해서는 프레임마다 폰의 속력과 애님 인스턴스의 CurrentPawnSpeed 값이 동일해야 한다. 이를 위해 폰의 Tick함수에서 애님인스턴스의 CurrentPawnSpeed에 쓰거나 애님인스턴스의 Tick에서 폰의 속도 정보를 가져온 후 이를 CurrentPawnSpeed에 업데이트하는 방법이 있다 후자로 구현해본다 애님인스턴스 클래스는 틱마다 호출되는 NativeAnimationUpdate함수를 가상 함수로 제공한다. 그래서 ABAnimInstance에 이를 상속받은 하나의 함수를 선언한다. 폰과 애님 인스턴스 데이터 연동 폰의 Tick 함수에서 애님 인스턴스의 CurrentPawnSpeed 조정 애님 인스턴스의 Tick에서 폰의..
ThirdPersonPlayer 분석하기 ThirdPersonPlayer를 포함하고 프로젝트를 만들면 프로젝트명+Character.cpp가 만들어지고 이게 ThirdPersonCharacter 폴더의 BP_ThirdPersonCharacter의 부모 클래스 이다. 일단은 MyPlayer 클래스를 만들고 프로젝트명+Character의 내용을 복붙했다. 다음에는 프로젝트명+Character를 직접 변경가능한지 테스트 해보고 싶다. // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "InputActionValue..