5个不稳定版本
0.3.0 | 2024年8月10日 |
---|---|
0.2.0 | 2024年6月20日 |
0.1.2 | 2024年6月8日 |
0.1.1 | 2024年6月4日 |
0.1.0 | 2024年6月4日 |
#641 在 游戏开发
122 每月下载次数
11KB
175 行
Bevy 滚动 2D 相机插件
这是一个为 bevy 引擎提供的简单 2D 相机插件,支持使用鼠标右键拖动滚动和鼠标滚轮缩放。
它适用于 RTS 或模拟 2D 游戏。
请查看 example 文件夹中的 cargo 项目以了解其工作方式。
bevy | bevy_scrolling_2d_camera |
---|---|
0.14.1 | 0.3.0 |
0.13 | ^0.1.* |
拖动功能的想法
按下鼠标右键时,插件会记录光标位置。从记录位置到当前光标位置的向量被用作相机速度。相机根据计算出的速度更新其平移。
此插件为您的项目添加的内容
此插件最小化,但它为您的项目添加以下内容。
- 一个持有相机实体的资源。
#[derive(Resource)]
pub struct ScrollingCamera{
pub entity: Option<Entity>,
}
- 一个存储相机速度的资源。
#[derive(Resource)]
pub struct CameraVelocity{
pub v: Vec3,
}
- 一个在按下鼠标右键时标记光标位置的资源。
#[derive(Resource)]
pub struct CapturedMouseRightClickPosition{
pub pos: Option<Vec2>,
}
- 一个限制缩放比例的资源。(从 0.2.0 版本开始添加)
#[derive(Resource)]
pub struct ZoomBound{
pub max: f32,
pub min: f32,
}
- 一个表示相机当前状态的枚举状态。
#[derive(States, Debug, Clone, Copy, Eq, PartialEq, Hash, Default)]
pub enum CameraState {
#[default]
Idling,
Scrolling,
}
- 四个更新系统以控制相机的移动。
pub fn camera_move(
mut query: Query<&mut Transform, With<Camera>>,
velocity: Res<CameraVelocity>,
time: Res<Time>,
scrolling_camera: Res<ScrollingCamera>,
) {/*...*/}
pub fn capture_mouse_right_click_for_scrolling(
mut commands: Commands,
windows: Query<&Window>,
input: Res<ButtonInput<MouseButton>>,
mut click_pos : ResMut<CapturedMouseRightClickPosition>,
) {/*...*/}
pub fn control_camera_movment(
mut commands: Commands,
window_query: Query<&Window>,
camera_query: Query<(&Camera, &GlobalTransform)>,
input: Res<ButtonInput<MouseButton>>,
click_pos : Res<CapturedMouseRightClickPosition>,
mut velocity: ResMut<CameraVelocity>,
mut gizmos: Gizmos,
scrolling_camera: Res<ScrollingCamera>,
){/*...*/}
pub fn camera_zoom(
mut mouse_wheel_event: EventReader<MouseWheel>,
mut query: Query<&mut OrthographicProjection>,
time: Res<Time>,
scrolling_camera: Res<ScrollingCamera>,
) {/*...*/}
依赖项
~23MB
~427K SLoC