{"id":49482238,"url":"https://github.com/jayhwkns/bevy_enhanced_camera","last_synced_at":"2026-05-03T01:01:19.558Z","repository":{"id":354534892,"uuid":"1221884422","full_name":"jayhwkns/bevy_enhanced_camera","owner":"jayhwkns","description":"Minimal camera controller plugin for Bevy that natively uses bevy_enhanced_input","archived":false,"fork":false,"pushed_at":"2026-05-01T17:42:20.000Z","size":240,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-02T00:02:51.640Z","etag":null,"topics":["bevy","bevy-plugin","game-development"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jayhwkns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-26T19:59:00.000Z","updated_at":"2026-05-01T23:25:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jayhwkns/bevy_enhanced_camera","commit_stats":null,"previous_names":["jayhwkns/bevy_enhanced_camera"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jayhwkns/bevy_enhanced_camera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayhwkns%2Fbevy_enhanced_camera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayhwkns%2Fbevy_enhanced_camera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayhwkns%2Fbevy_enhanced_camera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayhwkns%2Fbevy_enhanced_camera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jayhwkns","download_url":"https://codeload.github.com/jayhwkns/bevy_enhanced_camera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jayhwkns%2Fbevy_enhanced_camera/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32554777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T00:31:16.350Z","status":"ssl_error","status_checked_at":"2026-05-03T00:31:15.546Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bevy","bevy-plugin","game-development"],"created_at":"2026-04-30T23:02:13.941Z","updated_at":"2026-05-03T01:01:19.488Z","avatar_url":"https://github.com/jayhwkns.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bevy Enhanced Camera\n\nA minimal, configurable, general purpose first person and third person camera\nlibrary for Bevy.\nNatively uses [bevy_enhanced_input](https://github.com/simgine/bevy_enhanced_input).\nIf your project doesn't use bevy_enhanced_input, you should consider using\n[bevy_third_person_camera](https://github.com/The-DevBlog/bevy_third_person_camera)\ninstead.\n\nWith bevy_enhanced_input, the user is responsible for configuring bindings,\nsensitivity, etc.\n\n#### Minimal Example\n\n```rust\nuse bevy::prelude::*;\nuse bevy_enhanced_input::prelude::*;\nuse bevy_enhanced_camera::prelude::*;\n\n#[derive(Component)]\nstruct CameraContext;\n\nlet mut app = App::new();\napp.add_plugins((EnhancedInputPlugin, EnhancedCameraPlugin))\n    .add_input_context::\u003cCameraContext\u003e()\n    .finish();\n\nlet camera = app.world_mut().spawn((\n        Camera3d::default(),\n        Transform::default(),\n        EnhancedCamera::default(),\n        CameraContext,\n        actions!(CameraContext[\n            (\n                Action::\u003cRotateCamera\u003e::new(),\n                Bindings::spawn((\n                    // Mouse support\n                    Spawn(Binding::mouse_motion()),\n                    // Controller support\n                    Axial::right_stick(),\n                )),\n            ),\n        ]),\n    ))\n    .id();\n\napp.world_mut().spawn((\n    Transform::from_xyz(0.0, 0.0, 0.0),\n    TargetOf(camera),\n));\n```\n\n## Cargo Features\n\nTo keep the core of this crate simple, many features must be manually included\nvia your project's `Cargo.toml`.\n\n### Cursor Utils\n\nIncluded by default.\nAdds `LockCursor` and `UnlockCursor` actions to allow users to\nergonomically keep the cursor from flying out of the window.\n\n### Physics\n\nUses [Avian](https://github.com/avianphysics/avian) to prevent the camera from\nphasing through terrain.\nSee physics example in repository for a basic setup.\nRequires `PhysicsPlugins` in app or will panic otherwise.\n\nIf you are using this crate for a first-person camera, it is best to leave\nphysics disabled and let your character controller handle collisions.\n\n#### Fixed Timestep\n\nIf you notice that the gameplay's motion appears very jagged, you may be\nrunning the target's movement system in `Update` (or similar) while the\ncamera is updated on `FixedPreUpdate` when the physics feature is enabled.\n\nThe weakness of this is that `Time\u003cFixed\u003e` is 64 Hz by default, so if the game\nis running above 64fps, the character and camera will move less smoothly than\nthe game's framerate and the displayed transforms might be slightly inaccurate\nwithout interpolation (which has not been implemented yet).\n\nCurrently, there is no way to have a physical third-person camera running in a\nfixed timestep and a non-physical first-person camera running on update, though\nit is a planned feature.\n\n\u003cimg width=\"498\" height=\"390\" alt=\"bevy_enhanced_camera\" src=\"https://github.com/user-attachments/assets/26288e5f-556c-4106-bed3-d058a543353f\" /\u003e\n\n## Version Table\n\n| bevy  | bevy_enhanced_camera |\n|-------|----------------------|\n| 0.18  | 0.1-0.3, main        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayhwkns%2Fbevy_enhanced_camera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjayhwkns%2Fbevy_enhanced_camera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjayhwkns%2Fbevy_enhanced_camera/lists"}