반응형

Delta Time

프레임이 완료되기 까지 걸린 시간

 

 

FPS(Frame Per Second) : 초당 프레임 수

 

30FPS를 유지할 수 있는 컴퓨터는, 30 frame per second, 초당 평균 30frame 유지한다는 뜻이고 다시말하면, 1프레임 처리하는데 1/30 초가 걸린다는 것을 의미하고, 60FPS를 유지할 수 있는 컴퓨터는 1프레임당 1/60 초가 걸린다는것을 의미, 여기서 1/30 , 1/60 들이 delta time 이다,

 

 

여기서 유니티엔진의 Update 함수(1프레임당 1 호출) 쓴다고 하면

어떤 캐릭터가 있고 캐릭터의 포지션을 1프레임당 Vector3 만큼 이동 시킨다고 할때, 로직대로 한다면, 평균 30FPS 인경우 초당 30 나아갈 것이고, 60FPS 인경우 60 나아갈 것이다, 이는 공평한 플레이를 제공하지 못한다, 그러나 평균 유지 프레임이 다른건 어쩔 수 없어도

초당 이동하는 거리가 어느 컴퓨터든지 동일하게 만들어야 한다 그리고 이를 위해서 DeltaTime 쓴다

 

여기서 Time.deltaTime 바로 프레임을 수행 하는데 걸린 게임시간, 한프레임당 걸리는 시간을 뜻하고, 평균 30FPS 인경우, 1/30 것이고, 평균 60FPS 인경우 1/60 될것이다

그리고 위와 같이 Vector3 곱해주면, 프레임당 걸리는 시간만큼 나눠주게 되고

초당 이동하는 거리가 어느 컴퓨터든지 동일하게 된다

평균 30FPS 인경우, 30 이동할 것이기 때문에, 1회만 이동한 거리와 같게 하려면

1/30 곱해서, 이동한 거리를 30등분하여, 30 회만큼 이동하더라도 1회만 이동한 거리와 같게 될것이다

반응형
반응형

차 메쉬를 Unreal Engine 에서 Import 한뒤 Vehicle Pawn에 Skeletal Mesh로 사용하여

필드위에 Vehicle Pawn을 놓았더니 위와 같은 버그가 발생함

 

 

 

해결

Bone 의 위치가 잘못되어있었음

Skeletal Mesh의 X축이 정방향이라는 기준으로 

아래와 같은 위치에 있어야 함

 

올바른 예시

 

 

 

 

 

잘못된 예시

 

잘못된 예시

 

 

 

 

반응형

'GameProgramming > Unreal' 카테고리의 다른 글

배그 인벤토리창 캐릭터 랜더링 구현  (0) 2019.08.19
반응형

 

배그에서는 인벤토리 창을 열면 위와같이 캐릭터 외관을 렌더링 해준다 

비슷하게나마 구현하는 법 강좌를 찾았는데 https://www.youtube.com/watch?v=mSDgMmaddJw

실제 멀티플레이에서는 어떻게 PlayerCharacter와 동기화 시키는 지는 안나와있다

아래방법은 위강좌에 보충하여 데이터 동기화 하는법까지 나와있다

 

  • Actor를 만들기
  • RenderTarget 만들고 UI Material 만들기
  • Widget 블루프린트 작성, PlayerCharacter 데이터 동기화 준비
  • PlayerController 에서 액터 스폰
  • Recording 액터에서 데이터 동기화 하기

 

 

1.RecordingActor는 Actor클래스이다 SceneCaptureComponent2D 를 추가한뒤 PlayerCharacter와 똑같은 메쉬 정보를 한뒤 그것을 캡쳐하여 RenderTarget을 만든다
2.RenderTarget의 사이즈를 알맞게 맞춘다 보통 ( x:y = 1.5 : 2 )

 

 

3.Material을 만든뒤 Material Domain : 유저 인터페이스 BlendMode : Translucent

 

 

 

 

4.WidgetBP 를 만든뒤 Custom Scale로 아까 RenderTarget 사이즈와 맞춘다 Image를 추가 하고 RenderTaget Material을 Image로 셋팅한다

 

 

 

5. PlayerContorller   객체에서   Spawn  한뒤   변수로   승격하여   Reference 를   가지고   있는다

 

 

 

 

 

 

6.아까 만든 WidgetBP 에선 Construct 이벤트시 playerController가 가지고 있는 RecordingActor 레퍼런스를 변수로 승격하여 가지고 있는다 또한 GetControlledPawn을 통해 PlayerCharacter를 가지고 온후 RecordingActor의 변수로 가지고 있는 playerCharacter에 Set 시킨다

Recording Actor 에서는 Tick 이벤트를 통해 PlayerCharacter 레퍼런스를 통해 Mesh 정보들을 동기화 시킨다

 

 

 

 

 

 

결과 화면

활성레벨   에디터   뷰포트로   플레이할시   이렇게   나오는데

 

 

 

그러나 실제 Shipping 하면 잘나온다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'GameProgramming > Unreal' 카테고리의 다른 글

차 Mesh 땅에 반쯤 가라앉는 버그  (0) 2019.09.02

+ Recent posts