Rust로 게임 만들기 - 5부 - 운동

점프에 관한 것이었습니다. 거기에서 플레이어 입력을 받아 수직 이동으로 변환하는 방법을 배웠습니다. 이번에는 배운 내용을 활용하여 플레이어를 왼쪽에서 오른쪽으로 이동해 보겠습니다.

무브먼트 시스템



플레이어 이동을 담당하는 새 시스템을 추가하여 시작하겠습니다.

fn player_movement(
    keyboard_input: Res<Input<KeyCode>>,
    mut players: Query<(&Player, &mut RigidBodyVelocity)>
) {
    for (player, mut velocity) in players.iter_mut() {
        if keyboard_input.pressed(KeyCode::Left) {
            velocity.linvel = Vec2::new(-player.speed, velocity.linvel.y).into();
        }
        if keyboard_input.pressed(KeyCode::Right) {
            velocity.linvel = Vec2::new(player.speed, velocity.linvel.y).into();
        }
    }
}


이 시스템은 키보드의 왼쪽 및 오른쪽 키를 수신합니다. 이 키 중 하나를 누르면 시스템이 플레이어의 선형 속도를 x축의 + 또는 - 플레이어 속도 속성으로 설정하고 플레이어 속도의 y 구성 요소를 현재 y 속도로 설정합니다. 이렇게 하면 왼쪽이나 오른쪽을 눌러도 진행 중인 점프를 멈추는 효과가 없습니다.

시스템이 작동하려면 여전히 다음이 필요합니다.
  • 등록하려면:

  • .add_system(player_movement.system())
    


  • 플레이어의 구성 요소에 speed 속성을 추가하려면:

  • struct Player {
        speed: f32
    }
    


  • 플레이어의 속도를 설정하려면:

  • .insert(Player { speed: 3.5 })
    


    그 동안 나는 우리 플레이어jump_impulse를 7로 낮췄다.

    게임을 실행하면 키보드의 왼쪽 또는 오른쪽 키를 눌러 플레이어를 왼쪽 또는 오른쪽에서 이동할 수 있어야 합니다.

    더 나아가



    Bevy는 여러 유형의 사용자 입력 방법을 지원합니다. 우리는 키보드 이벤트를 처리하는 한 가지 방법을 배웠지만 마우스, 터치스크린 및/또는 게임패드에서도 동일한 작업을 수행할 수 있습니다.

    또한 키보드의 현재 상태를 보고 사용자 입력을 처리하는 방법도 배웠습니다. 이를 수행하는 또 다른 방법이 있습니다: 이벤트를 통해. 일부 유형의 입력은 이벤트로만 제공된다는 점을 아는 것이 중요합니다.

    지원되는 입력 방법 및 처리 방법에 대한 자세한 내용은 Bevy's unofficial cheat book을 참조하십시오.

    카메라로 플레이어 따라가기



    이제 플레이어는 이동할 수 있지만 플레이어가 화면을 벗어나면 카메라가 시야를 잃습니다. 카메라가 플레이어가 움직일 때 따라가면 좋을 것입니다. 이를 수행하는 한 가지 방법은 카메라를 플레이어의 자식으로 선언하는 것입니다.

    .with_children(|parent| {
        parent.spawn_bundle(new_camera_2d());
    })
    


    또한 setup 시스템에서 이전 카메라를 제거하고 setup 시스템이 비어 있으므로 제거해야 합니다.

    이 접근 방식은 효과가 있지만 몇 가지 주의 사항이 있습니다. 이 튜토리얼의 10부에서 더 나은 대안에 대해 배울 것입니다.

    최종 코드를 사용할 수 있습니다here.

    좋은 웹페이지 즐겨찾기