#camera #bevy #fps #3d #gamedev

bevy_config_cam

一个易于即插即用的多功能相机,可以轻松设置场景中的相机和玩家

6 个版本

0.3.0 2022年4月19日
0.2.0 2022年1月31日
0.1.3 2021年10月14日
0.1.2 2021年6月12日
0.1.1 2021年5月26日

2020年排名 游戏开发

每月37次 下载

MIT/Apache

35KB
605

bevy config cam

link to crates.io link to docs.rs link to license downloads/link to crates.io stars/github repo github actions tracking bevy release branch

一个易于即插即用的多功能相机控制器,可以轻松设置场景中的相机和玩家。

只需在现有项目中添加几行代码,您就可以通过将其附加到您的玩家资产或默认红色玩家实体来测试多种相机。

bevy_flycam 启发并扩展,此插件相当简单,但应该对寻求无需重新发明轮子即可实现相机实现的开发者有所帮助。

未来计划

此插件的主要目标是首先为用户提供一个可配置、可扩展且易于使用的API。@h3r2tic 的 dolly 是一个提供创建、组合和修改相机定位框架的crate,这正是 bevy_config_cam 所寻找的。因此,正在着手迁移到 dolly,以改进此插件的主要目标。

展示

相机模式

注视 静态跟随
LookAt FollowStatic
俯视 俯视方向
TopDown TopDownDirection
背后跟随 第一人称射击
FollowBehind Fps
自由 ?
Free 您还有其他想看到的相机模式吗?请通过创建问题告诉我 :)

设置

相机模式 圆点。 演示
移动速度(相机) 更改相机移动的速度
灵敏度 更改鼠标移动的灵敏度
线性插值 更改目标和玩家之间的线性插值(仅注视相机模式)
缩放/FOV 更改相机的FOV LowFOV
CamFwd(未使用) 在相对于世界坐标或相机局部坐标和旋转的xyz移动之间切换(仅自由相机模式)

入门

测试项目

在开始使用插件之前,我总是喜欢先运行示例,然后再为我的项目设置它。只是为了看看插件是否满足我的需求。如果您像我一样,那么这个就是为您准备的。

  1. 将此仓库克隆到您的本地计算机
  2. 进入项目文件夹(cd bevy_config_cam
  3. 运行 cargo 命令(cargo run --release --example simple
  4. 测试功能
    玩家:使用 移动,使用 RShift- 进行上下移动。
    摄像机:使用 WASD 移动,使用 SpaceLShift 进行上下移动。
    切换摄像机:按 C(在控制台中查看当前使用的摄像机类型)
    设置:按 E 并使用鼠标滚轮更改选中设置值。

添加到您的项目

将此插件添加到您的项目非常简单,只需编写 2 行代码。

步骤 1. - 设置

将正确的版本添加到您的 Cargo.toml 中,您可以在支持部分找到所需的版本。您应该添加的内容应如下所示(仅添加标记为 # <-- 的行)

[dependencies]
bevy = { version = "0.7"}
# ...
bevy_config_cam = { version = "0.3.0"} # <-- 

步骤 2. - 添加到项目

fn main() {
    App::new()
        .insert_resource(Msaa { samples: 4 })
        .add_plugins(DefaultPlugins)
        .add_plugin(ConfigCam) // <--
        // ... 
        // Your other plugins and game code here
        // ...
        .run();
}

步骤 3. - 配置(可选)

现在,bevy_config_cam 这个名字有它的原因。很可能你想要的不仅仅是默认行为。你可能想要在两种类型的摄像机之间切换,或者允许用户使用滑块更改 fov。目前我还没有在创建一个用户友好的 API 上取得太大进展,但这将是我想调查的事情。目前,您可以通过插入两个资源来覆盖插件默认行为,如下面的示例所示

    .insert_resource(MovementSettings {
        sensitivity: 0.00015, // default: 0.00012
        speed: 15.0,          // default: 12.0
        dist: 5.0,            // Camera distance from the player in topdown view
        ..Default::default()
    })
    .insert_resource(PlayerSettings {
        pos: Vec3::new(2., 0., 0.),//Initial position of the player
        player_asset: "models/craft_speederA.glb#Scene0", //Model of the player, default is a red cube
        ..Default::default()
    })

注意:其中一些是通过访问设置或更改摄像机类型来覆盖的。对此提供反馈将非常受欢迎,只需创建一个新的问题,我将在有时间的时候查看。

支持

Bevy tracking

bevy bevy_config_cam
0.5 0.1.X
0.6 0.2.X
0.7 0.3.X

许可

该项目采用 MIT 和 Apache-2.0 双重许可,因此您可以随心所欲地拿走,但请记住许可协议。

贡献

是的,这个项目仍然是 WIP,所以 PR 非常受欢迎

依赖

~39–53MB
~740K SLoC