{"id":14960636,"url":"https://github.com/ta-david-yu/2d-platformer-hunter","last_synced_at":"2025-04-06T02:09:37.041Z","repository":{"id":50701500,"uuid":"146158445","full_name":"ta-david-yu/2D-Platformer-Hunter","owner":"ta-david-yu","description":"A 2D Platformer Controller in Unity","archived":false,"fork":false,"pushed_at":"2024-04-03T15:24:11.000Z","size":4913,"stargazers_count":340,"open_issues_count":3,"forks_count":41,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-06T02:09:32.549Z","etag":null,"topics":["2d","2d-game","2d-platformer","2d-platformer-hunter","game-dev","plugin","unity","unity-package","unity-package-manager","unity-plugin"],"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/ta-david-yu.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":"2018-08-26T06:52:58.000Z","updated_at":"2025-04-02T18:46:27.000Z","dependencies_parsed_at":"2024-01-14T14:31:52.779Z","dependency_job_id":"a5c05c22-be3f-45c9-90ad-0a46955448a4","html_url":"https://github.com/ta-david-yu/2D-Platformer-Hunter","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ta-david-yu%2F2D-Platformer-Hunter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ta-david-yu%2F2D-Platformer-Hunter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ta-david-yu%2F2D-Platformer-Hunter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ta-david-yu%2F2D-Platformer-Hunter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ta-david-yu","download_url":"https://codeload.github.com/ta-david-yu/2D-Platformer-Hunter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423515,"owners_count":20936626,"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","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":["2d","2d-game","2d-platformer","2d-platformer-hunter","game-dev","plugin","unity","unity-package","unity-package-manager","unity-plugin"],"created_at":"2024-09-24T13:22:38.994Z","updated_at":"2025-04-06T02:09:37.019Z","avatar_url":"https://github.com/ta-david-yu.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/ta-david-yu/2D-Platformer-Hunter/blob/master/platformer-preview.gif)  \n# 2D Platformer Hunter \nImplementation of a raycast-based 2D platformer controller in Unity.  \nExtended from [Sebastian Lague's Creating a 2D Platformer series](https://youtu.be/MbWK8bCAU2w?list=PLFt_AvWsXl0f0hqURlhyIoAabKPgRsqjz.) with more customizable options and better modularization.\n\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n        \u003ca href=\"#description\"\u003eDescription\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n\t\t\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003ca href=\"#design\"\u003eDesign\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\n    \u003c/li\u003e\n      \u003cli\u003e\n        \u003ca href=\"#misc-notes\"\u003eMisc Notes\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003ca href=\"#credits\"\u003eCredits\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n        \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n    \u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n## Description\n- 2D Platformer Hunter is a 2D platforming controller that uses raycast-based collision, extended from [Sebastian Lague's \"Creating a 2D Platformer\" series](https://youtu.be/MbWK8bCAU2w?list=PLFt_AvWsXl0f0hqURlhyIoAabKPgRsqjz.) featuring more customization and modularity.\n- [Demo Video](https://youtu.be/wnalr3_RULU)\n- [Example Tutorial Level](https://youtu.be/Sj-WD9qeFmc)\n\n## Installation\n- Ensure you have the latest version of the [Unity Real-Time Development Platform](https://unity.com/download).\n- Navigate to Unity's top menu tab, select Window \u003e Package Manager, and install this package through the following link: https://github.com/ta-david-yu/2D-Platformer-Hunter.git\n\n## Design\n\nThe code structure is based on a Input-Controller-Motor model. Each controller consists of three individual components: Input, Controller and Motor.\n\nEach module can be replaced with user-customized module to achieve various gameplay mechanics.\n* The **Input** serves as the brain of the controller. The brain can be a preprogrammed AI system or be player-controlled. Input modules also support waypoint navigation for moving platforms.\n* The **Controller** represents the body of the controller. The body represents the actions a given character can perform. This includes regular movement, jumping, double-jumping, and dashing.\n* The **Motor** controls the physics acting on the controller. For example, a motor for a given character can collide with obstacles in a level. A motor for a platform or other level object can carry other motors and transforms.\n\nOther behaviours that do not belong to these three modules should instead be implemented in a different external components and set to listen to events sent out by one of these three main modules.\n\nFor instance, a sprite animation controller that swaps sprites when a character performs a jump should be set to listen to the OnJump event of the CharacterController object.\n\n## Features\n\n### Jumping\n  - Jump Input Buffering\n    - An inputted jump will be held and buffered for a period of time until the character has an actionable jump again, to improve responsivenes.\n  - Coyote Time\n    - Also known colloquially as \"Grace Period Jumping\". If a jump input is registered very shortly after a player character moves off a jumpable surface, the jump still occurs despite technically being mid-air.\n  - Variable Jump Height depending on held button.\n  - Wall Jump\n  - Air Jump\n### Climbing\n  - Editable climbing area\n    - Supports climbing on designated areas such as ladders and ropes. Climbing and non-climbing areas are distinguished by an area trigger. The controller will smoothly interpolate its position from the area trigger onto  the climbable area.\n  - Ledge Grabbing\n  - Wall Climbing\n    - Configurable behavior depending on whether you prefer your controller to slide down walls or climb up them.\n### Other\n  - Dash modules that can be applied to controllers to alter dashing behavior.\n  - Smooth movement on slopes\n  - One-Way Platform component that horizontally translates a platform in one direction.\n  - Moving Platform component that includes a node editor for waypoint editing.    \n\n## Misc Notes\n- The raycaster collision layer must be on different layer than the GameObject, to ensure gravity scaling and prevent unintended behavior.\n\n## Credits\n- [Character Sprites](https://rvros.itch.io/animated-pixel-hero)\n\n## License\n- Licensed under the [MIT License](LICENSE), meaning it is freely editable as long as the original copyright notice and disclaimers are included.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fta-david-yu%2F2d-platformer-hunter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fta-david-yu%2F2d-platformer-hunter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fta-david-yu%2F2d-platformer-hunter/lists"}