본문 바로가기

Unreal Engine548

Unreal Engine 충돌 글리치 Bug fix pushingCube와 충돌했을때 움직일때는 문제가 없으나, 가만히 서서 부딪히는 상황에서 글리치 현상이 발생한다. 캐릭터 코드는 움직이지 않는 한, 콜리전을 확인하지 않게 되어있기 때문이다. 따라서 매 틱마다 캐릭터를 조금씩 이동하되, 원점으로 돌아오도록 하면 된다. 따라서 BP_ThirdPersonCharacter 블루프린트 에디터를 열고, Delta는 얼마나 멀리 움직여줄 것인지에 대한 것이다. Sweep은 이동중에 발생하는 충돌처리를 할 것인지에 대한 것이다. -1 -1 로 하나를 더 연결해준 이유는, 가만히 있는 것 처럼 위치를 고정시키기 위함이다. 이제 스무스하게 충돌시 밀리는 것을 확인할 수 있다. 하지만, 이렇게 고쳐주면 캐릭터 회전에서 항상 정면을 바라보는 문제가 생긴다. 따라서, Get.. 2023. 7. 7.
Unreal Engine 하위 블루프린트 클래스 생성 이전에 C++ 클래스로 Moving Flatform 이라는 액터를 하나 만들었다. 그 하위에 마우스 오른쪽 버튼을 누른 뒤, 블루프린트 클래스를 생성할 수 있다. 다음과 같이, self의 하위에 메시를 덮어서 사용할 수 있다. Actor의 하위 블루클래스 이기 때문에, c++ 코드로도 수정이 가능하다. 이것을 이용해 위로 움직였다 아래로 내려오는 기둥 2개를 만들어봤다. 또한 하위 블루프린트의 좋은 점은 해당 액터를 상속하는 또다른 블루프린트를 만들 수 있다는 것 이다. 2023. 7. 7.
Unreal Engine 움직임 버그 fix 원래 좌우로 움직이던, 코드에 버그가 있어서 수정했다. 버그 내용은 다음과 같았다. 분기문의 DistanceMoved 와 MoveDistance를 비교하기 때문에 빠른 속도로 큰 거리를 이동하면, 내가 생각한 범위보다 더 움직이는 문제가 발생했던 것이었다. 수정된 내용은 다음과 같다. void AMovingFlatform::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector CurrentLocation = GetActorLocation(); CurrentLocation = CurrentLocation+(PlatformVelocity * DeltaTime); SetActorLocation(CurrentLocation); float DistanceMoved =.. 2023. 7. 7.
Unreal Engine DeltaTime DeltaTime을 사용하면, 각 프레임이 실행되는데 시간이 얼마나 걸리는 지 알 수 있다. void AMovingFlatform::Tick(float DeltaTime) 함수의 인자로 DeltaTime을 받아온다. 컴퓨팅 성능을 고려할 때, 동일한 동작을 위해서 사용한다. 예를들어, FPS가 10, 100인 서로 다른 성능의 컴퓨터가 있다고 생각하면 다음과 같다. FPS 10 100 화면 지속시간 0.1s 0.01s Distance per second 1 x 10 x 0.1 = 1 1 x 100 x 0.01 = 1 이렇게 DeltaTime을 곱해서 다른 사양의 컴퓨터에서 같은 거리를 움직이도록 유지한다. 2023. 7. 7.