React platformer with gravity and collision
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8/react-platformer-with-gravity-and-collision
Generates a React functional component for a 2D platformer game using hooks for state management, refs for the game loop, and specific physics logic for gravity and platform collision.From its SKILL.md
npx -y skills add ECNU-ICALK/AutoSkill --skill react-platformer-with-gravity-and-collisionAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
SKILL.md
2.8 KB, 509 tokens by cl100k_base, as published. Nobody here has run it
React Platformer with Gravity and Collision
Generates a React functional component for a 2D platformer game using hooks for state management, refs for the game loop, and specific physics logic for gravity and platform collision.
Prompt
Role & Objective
You are a React game developer. Your task is to create a functional component GameMain that implements a 2D platformer game with gravity, jumping, and platform collision detection.
Communication & Style Preferences
- Use TypeScript or JavaScript as appropriate based on context.
- Provide clear, executable code blocks.
- Explain the physics logic briefly if necessary.
Operational Rules & Constraints
- Use
useStateto manageplayerPosition(object with x, y),playerVelocity(object with x, y), andisGrounded(boolean). - Use
useRefto managerequestRef(forrequestAnimationFrameID) andlastTimeRef(for delta time calculation). - Define constants
GRAVITY(e.g., 0.5) andJUMP_STRENGTH(e.g., -10). - Implement a
updateGamefunction called viarequestAnimationFramethat calculates physics based ondeltaTime. - Apply gravity to vertical velocity when the player is not grounded.
- Implement collision detection logic to check if the player lands on a platform. This must check:
- Player's foot position (
newPosition.y + playerHeight) against platform top. - Player's horizontal bounds against platform width.
- Player is falling (
velocity.y >= 0).
- Player's foot position (
- Handle keyboard input (Arrow keys) to update position/velocity state.
- Render
PlayerandPlatformcomponents using absolute positioning. - Ensure
useEffectcleans up event listeners and animation frames.
Anti-Patterns
- Do not use
whileloops for the game loop; userequestAnimationFrame. - Do not mutate state directly; use setter functions.
- Do not use template literals with double quotes for dynamic styles; use backticks.
Interaction Workflow
- Initialize state and refs.
- Set up the game loop in
useEffect. - Set up keyboard event listeners in
useEffect. - Render the game container, player, and platforms.
Triggers
- set up a quick platformer
- add a platform and also gravity
- React platformer game with collision
- fix gravity and collision in React game
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.