#mouse #2d #bevy #gamedev #bevy-plugin

bevy_interact_2d

A Bevy plugin for 2d mouse interactions

5 releases

0.9.0 Dec 28, 2022
0.5.3 May 10, 2021
0.5.2 May 10, 2021
0.5.1 May 5, 2021
0.5.0 May 5, 2021

#896 in Game dev

Custom license

29KB
318 lines

Bevy Interact 2D

Work in progress

Plugin library for the Bevy game engine to easily add mouse interactions to 2d games.

Can help you with:

  • Hovering
  • Clicking
  • Dragging & Droppings

Progress bar example

Using Interact2D

Add the interaction plugin, or use the InteractionDebugPlugin instead when debugging.

App::build()
  .add_plugin(InteractionPlugin)

Spawn a camera with an interaction source with a number of interaction groups.

commands
  .spawn_bundle(OrthographicCameraBundle::new_2d())
  .insert(InteractionSource {
    groups: vec![Group(0), Group(1)],
    ..Default::default()
  })

Spawn an interactable entity

commands
  .spawn()
  .insert(Interactable {
    groups: vec![Group(0)],
    bounding_box: (Vec2::new(0., 0.), Vec2::new(10., 10.)),
    ..Default::default()
  })

Now you can create a system that uses the interaction state

fn interaction_system(
  mouse_button_input: Res<Input<MouseButton>>,
  interaction_state: Res<InteractionState>,
) {
  if !mouse_button_input.just_released(MouseButton::Left) {
    return;
  }

  for (entity, coords) in interaction_state.get_group(Group(0)).iter() {
    // Do something
  }
}

Dependencies

~37–51MB
~888K SLoC