Jesse Smith and Micahel Rowley
Minecraft Pickaxe Controller
Our controller is a Minecraft pickaxe that uses one of the game's most iconic tools and actions for input. The design connects directly to Minecraft's visual style, representing the diamond pickaxe with its color. The player uses the pickaxe for mining, combat, and exploration. Instead of pressing ordinary buttons on a standard controller, the player performs motions that resemble using a tool. Buttons on the handle select actions such as placing blocks, mining, and interacting. The player then confirms those inputs by striking the pointed end of the pickaxe against a surface. Jumping is performed by tapping the butt end of the pickaxe against a surface. To control the camera, the player holds the look button on the handle and drags the pickaxe along a surface. This makes playing the game feel more interactive and enhances immersion. Movement will be done using a pad with directional buttons that remains on a table or floor. This is to give a separation between movement actions and aiming/interacting.
Controller Sketch:
Schematic:
Pseudocode:
/*
Minecraft Pickaxe Controller Pseudocode
Goal:
Create a controller shaped like a Minecraft diamond pickaxe that allows
players to perform actions using physical motions instead of traditional
buttons.
-------------------------------------------------------
SETUP SECTION
-------------------------------------------------------
Initialize the Arduino board.
Define all input pins:
- Button for selecting "Place Block"
- Button for selecting "Mine / Attack"
- Button for activating "Look Mode"
- Sensor in the pickaxe tip for detecting strikes
- Sensor in the butt end for detecting taps (jump)
Initialize communication with the computer so the controller
can send keyboard and mouse inputs to Minecraft.
Set default action to NONE.
-------------------------------------------------------
MAIN LOOP
-------------------------------------------------------
Continuously run the following steps while the controller is powered.
1. Check the handle buttons to see which action the player selects.
2. Check the tip sensor to detect if the pickaxe hits a surface.
3. Check the butt sensor to detect if the player taps the bottom.
4. Check if the Look Mode button is being held.
5. If Look Mode is active, read motion input to control the camera.
-------------------------------------------------------
ACTION SELECTION
-------------------------------------------------------
If the player presses the "Place Block" button:
Set the current action to PLACE_BLOCK.
If the player presses the "Mine / Attack" button:
Set the current action to MINE_ACTION.
If no button is pressed:
Keep the last selected action.
-------------------------------------------------------
TIP STRIKE DETECTION
-------------------------------------------------------
Read the sensor located in the pointed end of the pickaxe.
If the sensor detects a strong impact:
Check which action is currently selected.
If the action is PLACE_BLOCK:
Send a RIGHT CLICK input to Minecraft
(this places a block).
If the action is MINE_ACTION:
Send a LEFT CLICK input to Minecraft
(this mines blocks or attacks enemies).
Wait a short amount of time to prevent
multiple accidental triggers.
-------------------------------------------------------
JUMP DETECTION
-------------------------------------------------------
Read the sensor located in the butt end of the pickaxe.
If the player taps the butt end against a surface:
Send the SPACEBAR input to Minecraft
(this makes the player jump).
Add a short delay to avoid repeated jumps.
-------------------------------------------------------
LOOK MODE
-------------------------------------------------------
If the player holds the "Look Mode" button:
Activate camera control.
Read motion from the motion sensor
(such as an accelerometer or tilt sensor).
Convert motion values into mouse movement.
Move the mouse cursor left/right/up/down
to control the player's camera view.
If the Look Mode button is released:
Stop sending camera movement.
-------------------------------------------------------
REPEAT
-------------------------------------------------------
Return to the beginning of the loop and
continue reading inputs from the controller.
*/
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.