Interaction System

Build a system in C# using object oriented patterns.

Objective

Create a system that uses a parent/child class inheritance or C# interfaces, and a working example project that uses it. You do not have to create, literally, an interactable-item system. It can be something else with a similar structure and use case – run your idea past me if you are not sure. First, I recommend building off of one of your character controllers, or use a character controller from the sample code as a starting example place.

The prototypical (and titular) example is an interaction system. See below for details.

Submission

We have been talking about architecture and re-usable code. This project is about extendable code.

Where I can easily add new features – new objects that get picked up. The interaction system doesn’t need to be perfectly separated from the rest of the project, or purely compartmentalized and pluggable into any new project.

Make a copy of your assets folder, and upload a .zip of it. Include a readme.md file in the root directory. It should include your name and a description of the project, how the different parts work. Each script should include a few lines of comments clarifying what it does. Put your code into a namespace so I can use one Unity project to open and examine your submissions without conflicts.

Purpose

Writing flexible code that has these kinds of useful parent/children classes is fundamental to creating immersive experiences. In VR systems, we will often create a parent class for something exactly like “Interactable” that contains code that lets us pick up and put down an item and calls a virtual function or event if we press a button while holding it.

Buttons, Guns, coffee mugs, whatever, might all be “Interactables”. We are staying with the 2D project world to minimize the time spent working on the example project, and maximize the time spent structuring the system underneath it. Yet these exact flexible structures are pivotal to creating and iterating in the immersive space.

It will eventually be useful to start spending time with Unity’s UI system. While not really part of this class, and not required as a graded element of the project; one will to need familiarizee themselves with it eventually. This project is a good opportunity to also integrete HUD/UI elements without those elements being ‘core’ (read: graded).

Rubric

Rubric Breakdown