본문 바로가기

공부259

[언리얼5] 개인 프로젝트 라인트레이스, 카메라설정 메모 현재 라인 트레이스는 아래처럼 진행 이때 문제가 발생 하는데 캐릭터보다 카메라는 뒤에 있기 때문에 카메라와 플레이어 사이에 오브젝트가 있다면 트레이싱이 정상적으로 이루어 지지 않는다. 추가적으로 SpringArim이 당겨져 올때 플레이어의 Mesh 때문에 시야가 막히는 것이 있다. 때문에 트레이싱의 시작점의 위치를 카메라보다 앞쪽으로 당겨 오도록 하고 카메라와 플레이어의 거리를 측정하는 변수를만들어 일정거리 이하가 되었을 시 플레이어와 무기의 메쉬의 Visible을 꺼주도록 한다. 이때 주의해야할점은 단순하게 안보이도록할 경우 다른 클라이언트에서 안보이는 치트가 될 수 있기 때문에 로컬컨트롤의 경우에 만 감추어져 보이도록 한다. 캐릭터 메쉬에 아이템을 장착할 하위 메쉬들이 있을경우 SetVisibilit.. 2024. 3. 8.
[언리얼5] 동적 크로스 헤어 사격하기위한 위치를 표시하는 CrossHair를 HUD를 통하여 화면에 그린다. 이때 플레이어의 다양한 움직임의 조건에 의하여 화면에 그려지는 크로스헤어는 벌어지거나 화면의 중심으로 모이는 움직임을 구현. 게임모드에 사용될 HUD 클래스를 생성 이때 크로스헤어는 동적으로(벌어지는 모션)움직여야 하기때문에 한장의 텍스처가아닌 크로스헤어의 중심, 상, 하, 좌, 우 5개의 변수로 나누고 텍스처를 적용 한다. HUD 클래스에 구조체를 만들어 각각 Center, Left, Right, Top, Bottom 멤버 변수로 생성 HUD 클래스는 Tick이아닌 DrawHUD를 통하여 매프레임 화면에 텍스처를 그린다. 화면에 텍스처를 그릴때에 주의해야할 점은 텍스처의 좌표체계는 UV 좌측상단이 0,0 우측하단이 1,1의.. 2024. 3. 6.
[언리얼5] 탄피 시뮬레이트피직스 & 타이머 플레이어가 사격할 때 총알이 발사되고 탄피가 배출되는 모션 테스트 탄피가 필요하므로 탄피 클래스를 벌도로 생성한뒤 단순하게 메쉬만 컴포넌트만 생성. 추가적으로 탄피가 배출될 때 AddImpulse 함수를 사용 탄피는 무기 클래스가 생성한다. 탄피클래스에서 메쉬를 생성할때에 주의해야할 점은 StaticMeshComponent에 카메라의 스프링암에 걸리지 않도록 카메라를 예외처리 해주어야 하며 자연스럽게 임펄스와 중력의 힘을 받기위해서는 시뮬레이트피직스를 설정하고 중력을 설정 해야 한다. 추가적으로 SetNotifyRigidBodyCollision을 설정하거나 블루프린트의 피직스충돌처리 옵션을 true로 설정해줘야 추가적인 충돌이벤트를 구현 할 수 있다. 개인적으로 탄피가 바닥에 떨어지거나 다른 물체에 충돌.. 2024. 3. 5.
[언리얼5] 멀티플레이 사격 테스트(NetMulticast) 플레이어 캐릭터에 무기를 장착하고 사격하는 애니메이션을 재생시킨다. 이때 무기 클래스를 별도로 만들고 무기의 애니메이션을 따로 넣어 준다. 테스트1 서버에서는 아이템 장착 애니메이션과 사격 애니메이션등이 정상적으로 이루어지지만 클라이언트에서는 해당 애니메이션들이 복사되지 않고 있는 것을 볼 수 있다. 애니매이션의 복사가 필요 NetMulticast RPC 를 사용한 데이터 복사 기존의 발사 함수외에 추가적인 매크로를 적용한 함수를 만든다.(함수매크로는 Server, Reliable 을 사용) 이때 선언정의후 CPP 파일에 정의된 함수에 _Implementation을 추가하도록한다. 일반함수로 사용할경우 값복사가 이루어지지않으며 컴파일이 불가능. 이후 추가적으로 멀티캐스트 호출용 함수도 만들어준다. 서버함.. 2024. 3. 4.
[언리얼5] NetUpdateFrequency 개인 프로젝트 참고 서버와 클라이언트간의 업데이트 주기를 설정하는 변수 기본적인 넷업데이트의 빈도는 66이 일반적이며 최소 33의 업데이트 빈도를 보장 하기를 권장. 추가적으로 서버의 틱레이트는 최대 60(60프레임에 맞추어서)에 맞춰주어야 함. 이유는 하드웨어의 성능에따라 플레이어간의 차이를 방지 하기 위해서. 예시로 틱레이트에 제한이 없을 경우 저사양 컴퓨터 유저는 초당 10번의 공격을 할 수 있다고 가정한다면, 고사양 컴퓨터 유저는 초당 10번 이상의 공격이 가능해 지기 때문. 프로젝트 경로폴더 > Config > DefaultEngine.ini 에 코드를 추가. [/Script/OnlineSubsystemUtils.IpNetDriver] NetServerMaxTickRate=60 2024. 3. 1.
[언리얼5] 에임오프셋과 루트본 회전 적용 에임오프셋 적용 플레이어가 바라보는 화면에따라 캐릭터에 회전값을 구하여 캐릭터가 플레이어가 바라보는 방향을 향하도록 합니다. 추가적으로 캐릭터의 상체부분에 에임오프셋이 적용될때 일정각도 이상의 차이가 생기게 될 경우 부자연 스러울 수 있기 때문에 루트본에 회전값을 설정하여 회전하고 있는 방향으로 회전을 적용 시켜 주도록 합니다. 애니매이션 블루프린트에서 루트본 회전사용시 Yaw 회전값만 적용 시켜줄때 현재의 회전값과 캐릭터를 회전시킬 값을 보간하여 부드럽게 회전. 애니메이션 블루프린트에서 캐릭터의 상태에 따라 트랜지션을 적용해야하기때문에 상태 변수도 사용 2024. 3. 1.