#portal #bevy #mirror #gamedev #graphics

bevy_basic_portals

Bevy 游戏引擎的传送门插件

7 个版本 (可能破坏)

0.6.0 2024 年 7 月 4 日
0.5.0 2024 年 4 月 8 日
0.4.0 2023 年 11 月 6 日
0.3.0 2023 年 8 月 15 日
0.1.0 2023 年 5 月 21 日

#150 in 游戏开发

Download history 147/week @ 2024-07-01 7/week @ 2024-07-08 67/week @ 2024-07-29

每月 98 次下载

自定义许可证

69KB
1.5K SLoC

Bevy 的传送门

crates.io docs.rs NVPLv7+ Following released Bevy versions

Bevy Basic Portals 是一个 Bevy 游戏引擎插件,旨在创建传送门。

这些传送门目前是纯视觉的,可用于创建镜子、室内渲染、水晶球等!

Portal Cube example Moving portals and destination example Mirror example

基本用法

此示例演示了如何创建一个简单的传送门,它使用一个球体,由于传送门的存在,这个球体将在屏幕上显示两次。

use bevy::prelude::*;
use bevy_basic_portals::*;

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, PortalsPlugin::MINIMAL))
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, mut meshes: ResMut<Assets<Mesh>>) {
    commands.spawn(Camera3dBundle {
        transform: Transform::from_xyz(-20.0, 0., 20.0).looking_at(Vec3::ZERO, Vec3::Y),
        ..default()
    });

    let portal_mesh = meshes.add(Mesh::from(Rectangle::new(10., 10.)));
    commands.spawn(CreatePortalBundle {
        mesh: portal_mesh,
        // This component will be deleted and things that are needed to create the portal will be created
        create_portal: CreatePortal {
            destination: AsPortalDestination::Create(CreatePortalDestination {
                transform: Transform::from_xyz(20., 0., 0.),
                ..default()
            }),
            // Uncomment this to see the portal
            /*debug: Some(DebugPortal {
                show_window: false,
                ..default()
            }),*/
            ..default()
        },
        ..default()
    });

    let sphere_mesh = meshes.add(Mesh::from(Sphere::new(2.).mesh().uv(32, 18)));
    commands.spawn(PbrBundle {
        mesh: sphere_mesh,
        transform: Transform::from_xyz(20., 0., -5.),
        ..default()
    });
}

更复杂的示例可以在示例文件夹中找到。

词汇表

  • 传送门是用于可视化效果的实体
  • 主摄像头是用于可视化效果的摄像头
  • (传送门)目的地是表示空间中传送门“指向”的点的实体
  • 传送门摄像头是用于渲染效果的摄像头,其与目标的位置与主摄像头与传送门的位置相同

已知限制

(可能在未来修复)

  • 此 crate 创建的传送门是单向的,您只能从一个空间看到另一个空间,如果需要双向传送门,可以手动创建两个传送门
  • 此 crate 不处理“传送门递归”,即在传送门中查看另一个传送门
  • 此 crate 创建的传送门没有可见的边界(不包括混叠伪影),您可以使用 DebugPortal 查看
  • 此 crate 不处理通过传送门移动物品,它仅是视觉的,更像是水晶球
  • 此 crate 不处理通过传送门的射线投射,需要手动完成
  • 此 crate 不处理更改传送门或目标的比例

Bevy 版本

Bevy 版本 Bevy Basic Portals 推荐版本
0.14.* 0.6.0
0.13.* 0.5.0
0.12.* 0.4.0
0.11.1 0.3.0
0.10.* 0.2.1

许可证

Bevy Basic Portals 是非暴力软件:您可以在 NVPLv7+ 许可证的条款下使用、重新分配和/或修改它,如源代码根目录中的 LICENSE 文件或 CNPL 仓库 中所述。

Bevy Basic Portals 根据适用法律,提供绝对无保证。

请参阅CNPL网站获取更多信息。

依赖关系

~30–66MB
~1M SLoC