일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
- tscriptinterface
- splinemeshcomponent scale
- 리디렉터 크래쉬
- UE5
- redirection crash
- UE
- deltaTime
- unreal engine skill
- Unreal Engine Error
- unreal engine redirection crash
- 언리얼
- staticmesh mobility
- Ai
- LittleNightMare
- ue4 error
- 13iew
- skill system
- Unreal Engine 5
- Unreal Engine 4
- redirector crash
- unity
- 랜덤 맵 생성
- UE4
- ue4 Crash
- change textblock color
- Random Map Generator
- unreal engine
- UnrealEngine
- 리디렉션 크래쉬
- register component
- Today
- Total
목록Unreal Engine 4 (6)
Class GameDev* SheepAdult

Nav Mesh를 런타임 중 변경하는 것은 구글링을 해보면 쉽게 알 수 있는 내용이다. 바로 아래와 같이 Runtime Generation을 Dynamic으로 바꿔주면 된다. 프로젝트를 생성한 후 아무런 설정도 건들지 않았다면 실행이 잘 되겠지만 본인도 모르는 사이에 설정을 바꿨다면 위의 값이 Dynamic이어도 runtime에 nav mesh가 바뀌지 않을 때가 있다. 바로 Navigation System의 설정값 중 "초기 빌드 잠금"이 true일 경우이다. 저 값을 true로 설정하면 내비게이션 시스템의 내비게이션 리빌드가 ReleaseInitialBuildingLock()을 호출할 때까지 중지된다.

(2022-12-27 수정) 물건이 떨어져서 바닥에 닿았을 때 소리가 나는 경우를 구현하고자 할 때, OnComponentHit을 사용해서 구현해야 한다는 생각이 자연스럽게 들 것이다. 하지만, OnComponentHit은 우리가 생각했던 것보다 더 많은 빈도수로 호출된다. 만약 어떠한 처리도 하지 않고 물건을 떨어뜨리면 바닥에 한 번만 닿아도 수십 번의 소리가 재생되어 원치 않던 소리가 나므로 적절한 처리를 해주어야 한다. 본문에서 사용할 처리 방법은 OnComponentHit의 매개변수인 NormalImpulse에 임계점을 주어 강한 충돌만 다룰 것이다. 여러 오브젝트에 이식할 수 있도록 컴포넌트로 만들었다. 아래는 PhysicsCollisionSoundComponent.cpp 이다. // Physi..

메뉴를 열거나 pause 키로 게임을 중단시키고 싶을 경우 일반적으로 UGameplayStatics::SetGamePaused(GetWorld(), true); 를 사용해 게임을 중단시킨다. 그리고 다시 게임으로 돌아오기 위해 ESC를 누르거나 P키(일반적으로 Pause키)를 누르면 안 눌러지는 것을 알 수 있다. 왜냐하면 게임이 중단되면 Input도 중단되기 때문이다. 그러면 FlipFlop형태로 중단했다가 재개하려면 어떻게 해야 할까? 블루프린트를 살펴보면 아래와 같은 bool 값이 있다. 저기 Execute when Paused가 있는 것을 알 수 있는데 저것을 true로 바꿔주면 된다. c++ 에선 아래와 같다. void AMainCharacter::SetupPlayerInputComponent(..
스켈레탈 메쉬에 대한 몽타주가 끝나거나 블렌드 아웃될 때, 혹은 노티파이가 시작될 때 등 스켈레탈 애니메이션에 대한 Delegate를 활용하여 코드를 더 안전하고 효율성 있게 짤 수 있다. 언리얼은 위젯 애니메이션에도 이러한 Delegate를 지원한다. 아래는 전체적인 코드이다. // Widget.h #pragma once #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" #include "Components/Image.h" #include "FirstPersonDefaultWidget.generated.h" /** * */ UCLASS() class CAP2_API UFirstPersonDefaultWidget : public UUserWidget..

결과물 Youtube Link : https://www.youtube.com/watch?v=t0hdhi6UnbM 사이드 뷰 게임에서의 밀고 당기기 기능을 어느 정도 구현해봤다. 처음에 감이 잘 잡히지 않아 정리를 해보고 구현했다. 본문 같은 경우 AddForce 같은 물리로 구현한 것이 아닌 AddWorldOffset과 AddWorldRotation을 사용해서 굉장히 자연스러운 구현은 못했지만 원하는 결과는 어느 정도 얻었다. 먼저 원리는 이렇다. 우선 개인적인 생각으로는 본인이 물건을 잡고있는 방향의 옆 방향을 입력했을 때는 움직일 수 없게 하는 게 자연스럽다고 생각했다. 에서 (1)은 움직일 수 없는 각도이고 (2)는 움직일 수 있는 각도이다. 만약 움직이는 키를 왼쪽 아래 방향을 입력한다면 왼쪽 아..
AddActorLocalOffset은 아래와 같다. void AddActorLocalOffset ( FVector DeltaLocation, bool bSweep, FHitResult * OutSweepHitResult, ETeleportType Teleport ) bSweep이 false라면 메쉬에 콜리 전이 있어도 Simulate Physics가 false라면 다른 물체와 충돌하지 않고 통과하지만 bSweep이 true라면 Simulate Physics가 false여도 다른 물체와 충돌처리된다. 참고로 ETeleportType은 true일 경우 물체 자체에 물리적 속도가 변하지 않아 래그돌에 영향을 주지 않지만 false일 경우 물리적 속도에 영향을 주어 래그돌에 영향을 준다.