공중에서 도약하기
공중도약을 하는 원리
- rigidbodyComponent안에 SetForce라는 함수가 숨겨져있다.
- SetForce 함수를 이용하면 rigidbodyComponent 를 가진 객체를 원하는 방향으로 힘을 가할 수 있다.
- 따라서 공중에서 LeftAlt 라는 KeydownEvent가 발생시 RigidbodyComponent:SetForce(Vector2(x방향,y방향) 중력을 조절하면 밑으로 떨어지지 않고 점프를 할 때마다 위로 둥둥 뜨게 할 수 있다.
Avoid_Obstacle_Mode Component
- 약 Player의 Mode를 따로 설정하지 않고 Default 상태로 만들어준다면 Property에 있는 string Mode를 설정해줄 필요가 없다. 그러나 미니게임처럼 다른 게임에서는 해당 모드가 필요 없을 상황을 방지하기 위해 Mode를 설정하여 장애물피하기 맵에서만 해당 기능이 가능하도록 했다.
- Entity Event Handler: 해당 모드에서는 공중에서 LeftAlt키를 누를때 Player가 바라보는 방향과 위로 점프하도록 연출했다.
- 위 Component의 목적은 공중에서 LeftAlt 키를 누를시 위로 뛰어오르게끔 연출하는 것이다. 따라서 위에 Property에서 설정했듯이 Mode = “Avoid_Obstacle” 즉 장애물 피하기 모드일경우에만 해당 처리가 하도록 if문을 통해 만들어주었다. 그 뒤 점프시에 카메라가 바로 따라가줘야 장애물을 보고 피할 수 있으므로_UserService.LocalPlayer.CameraComponent.Damping.x(y) (카메라 반응속도)를 짧게 낮춰 카메라가 플레이어를 빠르게 따라갈 수 있도록 설정해준다.
- KeyDownEvent의 parameter로 key가 들어오므로. key == KeyboardKey.LeftAlt를 통해 LeftAlt가 눌릴경우를 확인해주고 _UserService.LocalPlayer.PlayerControllerComponent.LookDirectionX (플레이어가 왼쪽을 바라보면 -1, 오른쪽을 바라보면 +1) 이 나오는것을 통해 바라보는 방향의 상단쪽으로 힘을 가해 공중에서 도약하는것처럼 연출해주었다.
결과