| Crates.io | bevy_independent_transform |
| lib.rs | bevy_independent_transform |
| version | 0.1.2 |
| created_at | 2022-10-05 11:42:02.545824+00 |
| updated_at | 2022-10-05 16:05:03.800804+00 |
| description | Entities with an IndependentTransform have a position relative to their parent, but aren't part of the Bevy Transform hierarchy. |
| homepage | |
| repository | https://github.com/ickshonpe/bevy_independent_transform |
| max_upload_size | |
| id | 680450 |
| size | 274,408 |
Entities with an IndependentTransform have a position relative to their parent, but aren't part of the Bevy Transform hierarchy.
With Transform :

With IndependentTransform:

Supports Bevy 0.8
Add the dependency to your Cargo.toml
bevy_independent_transform = "0.1"
and the plugin to your App
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(IndependentTransformPlugin)
// .. rest of App
run()
}
IndependentTransform is a newtype wrapping Transform.
Like Transform, an entity with a IndependentTransform should also have a GlobalTransform.
You can insert an IndependentTransform component directly, or spawn one of the bundles included with this crate:
IndependentSpriteBundleIndependentSpriteSheetBundleIndependentText2dBundleIndependentTransformBundleIf an entity has both IndependentTransform and Transform components, the IndependentTransform component will be ignored.
cargo run --example text
cargo run --example sprites
For an alternative that respects the Bevy transform hierarchy, see my other crate at
https://github.com/ickshonpe/bevy_fixed_sprites
The approach here seems better for text and game icons, and bevy_fixed_sprites is probably better for sprites representing game characters and objects.
I'm not sure how to combine both methods. Maybe it's not possible without introducing a lot of complexity and extra components, and/or replacing Bevy's transform_propagate_system system
entirely. Haven't really thought about it much though.