{"id":26483961,"url":"https://github.com/vrlabs/rigidbody-throw","last_synced_at":"2025-10-08T19:24:41.019Z","repository":{"id":235822770,"uuid":"663240425","full_name":"VRLabs/Rigidbody-Throw","owner":"VRLabs","description":"System for letting you throw physics objects","archived":false,"fork":false,"pushed_at":"2024-11-15T13:47:39.000Z","size":8390,"stargazers_count":16,"open_issues_count":2,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-05T20:35:16.431Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","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/VRLabs.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}},"created_at":"2023-07-06T21:45:20.000Z","updated_at":"2025-04-04T12:22:00.000Z","dependencies_parsed_at":"2024-04-24T17:22:03.190Z","dependency_job_id":"174ef315-0eba-46d6-bf0e-fe756566fc87","html_url":"https://github.com/VRLabs/Rigidbody-Throw","commit_stats":null,"previous_names":["vrlabs/rigidbody-throw"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/VRLabs/Rigidbody-Throw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VRLabs%2FRigidbody-Throw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VRLabs%2FRigidbody-Throw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VRLabs%2FRigidbody-Throw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VRLabs%2FRigidbody-Throw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VRLabs","download_url":"https://codeload.github.com/VRLabs/Rigidbody-Throw/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VRLabs%2FRigidbody-Throw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000704,"owners_count":26082805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-03-20T04:59:16.719Z","updated_at":"2025-10-08T19:24:41.001Z","avatar_url":"https://github.com/VRLabs.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Rigidbody Throw\n\n[![Generic badge](https://img.shields.io/github/downloads/VRLabs/Rigidbody-Throw/total?label=Downloads)](https://github.com/VRLabs/Rigidbody-Throw/releases/latest)\n[![Generic badge](https://img.shields.io/badge/License-MIT-informational.svg)](https://github.com/VRLabs/Rigidbody-Throw/blob/main/LICENSE)\n[![Generic badge](https://img.shields.io/badge/Quest-Incompatible-red?logo=Meta)](https://img.shields.io/badge/Quest-Incompatible-red?logo=Meta)\n[![Generic badge](https://img.shields.io/badge/Unity-2022.3.22f1-lightblue?logo=Unity)](https://unity.com/releases/editor/whats-new/2022.3.22)\n[![Generic badge](https://img.shields.io/badge/SDK-AvatarSDK3-lightblue.svg)](https://vrchat.com/home/download)\n\n[![Generic badge](https://img.shields.io/discord/706913824607043605?color=%237289da\u0026label=DISCORD\u0026logo=Discord\u0026style=for-the-badge)](https://discord.vrlabs.dev/)\n[![Generic badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Dvrlabs%26type%3Dpatrons\u0026style=for-the-badge)](https://patreon.vrlabs.dev/)\n\nThrow an object with collision against the world\n\n![Rigidbody Throw](https://github.com/VRLabs/Rigidbody-Throw/assets/76777936/b4915105-3d27-4095-b162-435a2a981b89)\n\n### ⬇️ [Download Latest Version](https://github.com/VRLabs/Rigidbody-Throw/releases/latest)\n\n### 📦 [Add to VRChat Creator Companion](https://vrlabs.dev/packages?package=dev.vrlabs.rigidbody-throw)\n\n\u003c/div\u003e\n\n---\n\n## How it works\n\n* A particle system is parented to the throw target, which emits particles as it moves.\n* When the system is enabled, these particles hit the Force Collider, which adds force to the Rigidbody.\n* This Rigidbody then flies forward as if thrown, and collides with the world using the Collision Collider.\n* Meanwhile, Contact Senders and Receivers, in combination with Constraints, are used to figure out the position of the thrown object, and this is synced to the remote client (since parameter force is local only).\n  * This remote sync is not incredibly accurate to not spend too many bits on it: 25m from where you throw, with 0.2m precision, so landing location might differ slightly between local and remote.\n  * If you want rotation sync, install the components from the Rotation-Synced directory.\n\n## Install guide\n\nhttps://github.com/VRLabs/Rigidbody-Throw/assets/76777936/57fbfe66-ddfd-4b0c-b168-e739ffc0a1ef\n\n* Merge the Animator Controller ``Rigidbody Throw FX`` to your own FX Controller, using the [Avatars 3.0 Manager](https://github.com/VRLabs/Avatars-3.0-Manager) tool.\n* Merge the Expression Parameter List ``Rigidbody Throw Parameters`` to your own Expression Parameter List, using the [Avatars 3.0 Manager](https://github.com/VRLabs/Avatars-3.0-Manager) tool.\n* Drag \u0026 drop the ``Rigidbody Throw`` prefab into the base of your Hierarchy.\n* Right click and unpack the prefab, then drag \u0026 drop it onto your avatar.\n* Move ``Throw Target`` outside of ``Rigidbody Throw/Throw`` and place it anywhere in your avatar's hierarchy. Adjust the transforms as needed.\n\n## How to use\n\n* Place the objects you want to to use inside ``Rigidbody Throw`` -\u003e ``Throw`` -\u003e ``Container``.\n  * Alternatively you can constrain the objects to ``Container``.\n* Your right hand gesture must be 2 (HandOpen) for the system to release, and 1 (Fist) to reset.\n* To change the friction and the bounciness, change the parameters on the ``Resources/Physics Material`` Physics Material and apply that Physics Material to your Collision Collider.\n* To have a custom throwing/reset condition, change the ``GestureRight Equals 1 or 2`` conditions in the ``Rigidbody Throw Main`` layer.  \n* To change world collision, only use Colliders on the `Collision Collider` object. This can be a Box Collider, Sphere Collider, Capsule Collider, but it has to be on the `Collision Collider` object.\n\n## Performance stats\n\nDefault version:\n\n```c++\nColliders:              2\nConstraints:            10\nConstraint Depth:       7\nContact Receivers:      4\nContact Senders:        2\nFX Animator Layers:     4\nParticle Systems:       2\nRigidbodies:            2\nJoints:                 1\nExpression Parameters:  27\n```\n\nRotation synced version:\n\n```c++\nColliders:              2\nConstraints:            14\nConstraint Depth:       8\nContact Receivers:      4\nContact Senders:        2\nFX Animator Layers:     4\nParticle Systems:       2\nPhysBones:              6\nPhysBone Colliders:     3\nRigidbodies:            2\nJoints:                 1\nExpression Parameters:  51\n```\n\n## Hierarchy layout\n\nDefault version:\n\n```html\nRigidbody Throw\n|-Throw\n|  |-Throw Target\n|  |-Force Particle\n|  |-Container\n|  |  |-Colliders\n|  |  |  |-Force Collider\n|  |  |  |-Colission Collider\n|  |  |  |-Collision Detection\n|  |  |-Example Sphere\n|  |-Quick Position Sync\n|  |  |-Position Sync\n|  |  |  |-Contacts\n|  |  |  |  |-Sender\n|  |  |  |  |-Receiver X\n|  |  |  |  |-Receiver Y\n|  |  |  |  |-Receiver Z\n|  |  |  |-Local Target\n|  |  |  |-Remote Target\n```\n\nRotation synced version:\n\n```html\nRigidbody Throw\n|-Throw\n|  |-Throw Target\n|  |-Force Particle\n|  |-Container\n|  |  |-Colliders\n|  |  |  |-Force Collider\n|  |  |  |-Colission Collider\n|  |  |  |-Collision Detection\n|  |  |-Example Cube\n|  |-Quick Position Sync\n|  |  |-Position Sync\n|  |  |  |-Contacts\n|  |  |  |  |-Sender\n|  |  |  |  |-Receiver X\n|  |  |  |  |-Receiver Y\n|  |  |  |  |-Receiver Z\n|  |  |  |-Local Target\n|  |  |  |-Remote Target\n|  |  |-Rotation Sync\n|  |  |  |-Measure Bones\n|  |  |  |  |-Measure X Magnitude\n|  |  |  |  |-Measure X Sign\n|  |  |  |  |-Measure Y Magnitude\n|  |  |  |  |-Measure Y Sign\n|  |  |  |  |-Measure Z Magnitude\n|  |  |  |  |-Measure Z Sign\n|  |  |  |-Measure Planes\n|  |  |  |  |-X Angle Plane\n|  |  |  |  |-Y Angle Plane\n|  |  |  |  |-Z Angle Plane\n```\n\n## Contributors\n\n* [hfcred](https://github.com/hfcred)\n* [jellejurre](https://github.com/jellejurre)\n* [jetees](https://github.com/jetees)\n* [JustSleightly](https://links.sleightly.dev)\n* [Liindy](https://liindy.gumroad.com/)\n\n## License\n\nRigidbody Throw is available as-is under MIT. For more information see [LICENSE](https://github.com/VRLabs/Rigidbody-Throw/blob/main/LICENSE).\n\n​\n\n\u003cdiv align=\"center\"\u003e\n\n[\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/VRLabs.png\" width=\"50\" height=\"50\"\u003e](https://vrlabs.dev \"VRLabs\")\n\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Empty.png\" width=\"10\"\u003e\n[\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Discord.png\" width=\"50\" height=\"50\"\u003e](https://discord.vrlabs.dev/ \"VRLabs\")\n\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Empty.png\" width=\"10\"\u003e\n[\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Patreon.png\" width=\"50\" height=\"50\"\u003e](https://patreon.vrlabs.dev/ \"VRLabs\")\n\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Empty.png\" width=\"10\"\u003e\n[\u003cimg src=\"https://github.com/VRLabs/Resources/raw/main/Icons/Twitter.png\" width=\"50\" height=\"50\"\u003e](https://twitter.com/vrlabsdev \"VRLabs\")\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrlabs%2Frigidbody-throw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvrlabs%2Frigidbody-throw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvrlabs%2Frigidbody-throw/lists"}