Assignment 3: Making Beat Saber in Unity
- Due Oct 19, 2021 by 10pm
- Points 20
We are using GitHub classroom for submission of programming assignments. This system will create a new private repository with template code that is only accessible by you, the instructor, and the TA. (Other students will not be able to see it.) You should submit the assignment by committing and pushing your code to your private repository by the posted deadline.
You can create your private repository using the following link:
https://classroom.github.com/a/EOTRneOd
Links to an external site.
(Links to an external site.)
You will need to create a GitHub.com account if you do not already have one. Note that this is different from the University's github.umn.edu account.
The public repository for this assignment can be found at:
https://github.com/CSCI-5619-Fall-2021/Assignment-3
Links to an external site.
(Links to an external site.) (Links to an external site.)
You can always read the most recent version of the assignment description in the public repository (for example, if the instructor needs to fix an error after the assignment is released). Note that you will not able to submit your code to the public repository.
Rubric
Criteria | Ratings | Pts | |
---|---|---|---|
Make a single cube that starts at the far end of the room and moves towards the user's start position. Adjust the size and velocity so that it provides an appropriate challenge.
threshold:
pts
|
pts
--
|
||
When the user hits a cube with a laser sword, the cube should be destroyed.
threshold:
pts
|
pts
--
|
||
Play a sound when the cube is destroyed. There are plenty of websites for free sound effects. You should find one that you like and import it into your project.
threshold:
pts
|
pts
--
|
||
Create a `CubeSpawner` that creates new cubes at random time intervals between 0.5 and 2.0 seconds. You can feel free adjust these time thresholds to reach an appropriate difficulty. The cubes should also start at the far end of the room, fly towards the user, and should be destroyed when hit by a laser sword
threshold:
pts
|
pts
--
|
||
The exact X and Y positions of the spawned cubes should be chosen randomly, but should always be within reach of the user's swords when standing at the start position.
threshold:
pts
|
pts
--
|
||
If a cube collides with a wall, it should also be destroyed, but no sound effect should be played. We don't want to end up with infinite cubes that would slow down the Quest!
threshold:
pts
|
pts
--
|
||
Replace your cubes with the premade one located in the `Prefabs` folder. This cube has an arrow texture that indicates the direction in which to swing the sword. Modify your script so that the cube is only destroyed when hit by a sword swung in that direction.
threshold:
pts
|
pts
--
|
||
When a cube is spawned, it should be rotated so that the direction of the arrow is either up, down, left, or right, selected randomly.
threshold:
pts
|
pts
--
|
||
Finally, modify your `CubeSpawner` so that it spawns two different types of cubes, depending on the sword the user should hit them with. For example, blue cubes could only be destroyed by the left sword, and red cubes could only be destroyed by the right sword. Finally, adjust the colors of each laser sword to match the cubes.
threshold:
pts
|
pts
--
|
||
Transform your project into a real rhythm game! Find a music track that you like and add it as an audio source in the scene. Then, modify your `CubeSpawner` so that instead of spawning cubes randomly, the user will need to hit them according to the beat of the music. You will need to store the time for spawning each cube in a data structure that the `CubeSpawner` can iterate through. To accomplish this, you may want to play the music track in an external application such as [Audacity](https://www.audacityteam.org/) and make a list of times for each beat. When you start playing the music, make sure to insert a delay to account for the time for the cubes to travel to the player. You do not need to do this for the entire song; approximately 20-30 seconds of gameplay will be sufficient for bonus credit.
threshold:
pts
|
pts
--
|
||
Total Points:
22
out of 22
|