Climb! And be brave!
Monkeying Around is a two-week project where players use hand-tracking technology to climb through a vibrant world. Overcome the challenges of three towering shelves to reunite with your monkey toy companion!
Inspiration
“If horizontal space is limited, why not take advantage of the vertical?”
Developed by students at Carnegie Mellon University’s Entertainment Technology Center, this idea emerged during brainstorming. Inspired by the constraints of physical space, I proposed creating a climbing game to push the boundaries of vertical exploration.
Basic Concept
Imagine the motion of climbing: as your hands move downward, your body moves upward. This concept forms the basis for moving the camera using hand-tracking data—applying hand movements inversely to the camera’s motion.
Physics Implementation
Unity’s built-in physics system, controlled by the Rigidbody component, is used here. When climbing, gravity must be turned off, allowing the player to move entirely based on hand movements. Once both hands are released, gravity is re-enabled.
Starting and Stopping Climbing
When a hand touches the placeholder, every movement of that hand is applied inversely to the camera. This enables the climbing motion to start and stop based on the hand’s interaction with the placeholder.
Major Hand Logic
During climbing, people naturally rely on the most recently engaged hand to pull themselves up. Similarly, in this implementation, the player’s movement is driven by the latest hand that touches the placeholder.
Hand Switching
What happens if a player releases one hand from the placeholder? The system accounts for this with hand-switching logic: if one hand is released, the remaining hand on the placeholder automatically becomes the major hand.
How To Release The Hand?
When the hand’s movement offset is inversely applied to the camera’s position, the hand remains stuck to the placeholder. This creates a challenge in determining how to release the hand from the placeholder. Since the hand’s distance from the placeholder cannot be directly used as the sole criterion, an alternative mechanism was designed: using another game object as the reference for determining whether the hand is far enough to release.
I call this the Marker Weighting Mechanism. When the hand touches the placeholder, an independent marker game object aligns with the hand's position. A normal vector is then calculated based on the hand's position, its forward vector, and the placeholder's position. As the hand moves, the offset is applied to the marker's position. However, movements in the same direction as the normal vector are assigned a higher weight, causing the marker to move away from the placeholder more significantly than the hand's actual offset.
When the marker reaches the release threshold distance from the placeholder, the hand is considered released. This mechanism ensures smooth and intuitive detachment from the placeholder without relying solely on the hand's direct position.
Loss of Tracking
The Meta Quest 3 tracks hands within a specific field of view. During playtesting, many players looked around, moved their hands out of this range, or overlapped their hands, causing the system to lose hand tracking and resulting in players falling. To address this, a logic was implemented to maintain the player's position when tracking is lost and re-enable hand movement once tracking is restored.
Valid Touch
A touch is considered valid if it meets the following conditions:
1. Touched by the palm.
2. Contact occurs at a specific angle.
3. Within the required distance.
These conditions are determined by analyzing the hand's forward vector and the normal vector at the point of contact with the placeholder.
— PROJECT NAME
Monkeying Around
— ROLE
Programmer
— DATE
Sep, 2024
My Contribution
Developed Climbing Mechanism
a. Touch angle detection
b. Hand-tracking for camera movement
c. Attachment/detachment rules.
Developed the game flow
a. Scene transitions
b. Event-based object communication
c. Game state logic.
Developed Visual Effects
a. Designed visual cues for climbing status.