Assignment 2 is the second Foundation Assignment, graded out of 10. It forms part of the 60% Foundation Assignments block (pass all six and your lowest passing grade is dropped).

<aside> <img src="/icons/git_blue.svg" alt="/icons/git_blue.svg" width="40px" />

Fork and Clone via: https://gitlab.utwente.nl/getxr2026/a2-getxr-assignment

The Git workflow (forking, cloning outside cloud-synced storage, staging companion .meta files, and pushing via GitHub Desktop) follows the same process described for A1: Basic Movement.

Repository: Fork a2-getxr-assignment as getxr-a2 (Private), and share it with the getxr2026 group as Reporter.

Git Help & Guide: For step-by-step setup, credential management, Git LFS, and troubleshooting, see the Using GitLab & GitHub Desktop guide.

</aside>

What to Build

In this assignment, you transition from controlling a single object to building a dynamic real-time gameplay loop. You will build a Unity scene centered around runtime instantiation, collection tracking, and physics-driven state changes. Implement the following:

You can reuse your Player prefab and Mover.cs from A1 (or a simple moving primitive) to interact with spawned objects.

Scene Setup

Do not spend time looking for fancy 3D models or searching asset packs. Grading is only based on your C# scripting, physics triggers, and memory management. Basic Unity 3D primitives (Cubes, Spheres, Capsules) with colored materials are enough for a 10/10. It just needs to be clear what is happening in the scene:

Template Setup & Wiring

Fork the template: