#camera #bevy #controller #orbit #minimalist #3d #input

bevy_simple_camera_controller

简约相机控制器

4 个版本

0.2.1 2024 年 7 月 20 日
0.2.0 2024 年 7 月 20 日
0.1.1 2024 年 7 月 19 日
0.1.0 2024 年 7 月 17 日

#211硬件支持

Download history 31/week @ 2024-07-11 271/week @ 2024-07-18 44/week @ 2024-07-25 9/week @ 2024-08-01

每月 355 次下载

MIT 许可证

37KB
610

bevy_simple_camera_controller

工作进行中!
为 Bevy 0.14.0 制作的 3D 相机控制器
我是 Rust 和 Bevy 的新手。随着我对两者的理解加深,该项目将发生变化。

尝试让添加相机控制器到 Bevy 项目变得容易。主要关注易用性。

相机类型

  • 自由飞行
  • 顶部视角
  • 轨道
  • 通过构建器模式自定义相机

输入

  • 键盘
  • 鼠标
  • 键盘的自定义键绑定

功能

  • 捕获鼠标焦点。鼠标始终位于屏幕中央(按 ESC 取消)
  • 隐藏鼠标。

示例

自由飞行

使用 WASD 移动相机。
使用鼠标旋转相机。

mod common;

use bevy_simple_camera_controller::prelude::*;
use bevy::prelude::*;
use common::utils;

fn main() {
    let mut app = App::new();

        app.add_plugins((
            DefaultPlugins,
            // 1: Setup camera
            FreeFlightControllerBuilder::default().build()
        ));

        app.add_systems(Startup, (
            // 2: Create camera
            CameraControllerPlugin::create_camera,
            utils::setup_example_scene,
        ));
        app.run();
}

顶部视角

使用 WASD 移动相机。

mod common;

use bevy_simple_camera_controller::prelude::*;
use bevy::prelude::*;
use common::utils;

fn main() {
    let mut app = App::new();

    app.add_plugins((
        DefaultPlugins,
        // 1: Setup camera
        TopDownControllerBuilder::default().build()
    ));

    app.add_systems(Startup, (
        // 2: Create camera
        CameraControllerPlugin::create_camera,
        utils::setup_example_scene,
    ));
    app.run();
}

轨道

使用鼠标旋转相机

mod common;

use bevy_simple_camera_controller::prelude::*;
use bevy::prelude::*;
use common::utils;

fn main() {
    let mut app = App::new();

    app.add_plugins((
        DefaultPlugins,
        // 1: Setup camera
        OrbitControllerBuilder::default().
            with_grab_cursor().
            set_rotation_speed(2.0).
            build()
    ));

    app.add_systems(Startup, (
        // 2: Create camera
        CameraControllerPlugin::create_camera,
        // Adds CameraOrbitTag to cube in order to set it as rotation target
        utils::setup_example_scene,
    ));
    app.run();
}

兼容性

Bevy bevy_simple_camera_controller
0.14 0.1.0

依赖项

~22MB
~402K SLoC