How to Create Simple Impossible Spaces in Unity

Impossible spaces refer to the mechanic shown in the video. It’s where the geometry of a scene doesn’t seem to be possible or fakes being non-Euclidean in an interesting way.

How to Set Up the Scene in Unity.

A “teleporter” script, created by a YouTube user named, Danubian, is used to make impossible levels or objects appear as you walk around.

First step is creating four identical scenes. Each scene is placed in an empty game object to manage easier.

Screenshot of Duplicated Scenes to Create Impossible Spaces in Unity

The four identical scenes are used to teleport the player between while making minor changes to the geometry. This gives the illusion of impossible spaces or appearing objects.

The appearing red balls are added to each scene afterwards. The blue planes shown below aren’t rendered when the game is played. If they are, check the mesh renderer attribute to toggle visibility. Each plane is either a entry or an exit for the “Teleporter.cs” script. When the player collides with entry planes, the plane teleports the player to the exit plane instantly.

Blue Planes to Represent the Teleportation Colliders
These blue planes are invisible on runtime but are used as colliders to teleport the player between scenes to hide or show the red ball behind the pillars.

Other than having balls appear when the player moves around, this mechanic is commonly used to create what are called “impossible spaces.” In a different game, the player turns around a hallway, finds a dead end, turns back, and finds the hallway lengthened. The scene with the red plane moves the player to the white plane scene(both planes are visible only in the editor). The hairpin corner hides the changing architecture from the player’s view.

Japanese Game Illustrating the Use or Impossible Spaces to Create Lengthened Hallways
This screenshot is from a game in development which has impossible spaces used to create mysteriously lengthening hallways.

Download Links:

Leave a comment or share if this was helpful to you!