This tutorial implies the creation of a maze with Rhino Grasshopper and alternatively with Blender, than exporting and preparing the set in Unity. In Unity a NavMesh with IA will be implemented. Then a few scripts will allowed to set up a game experience that will be extended in Augmented Reality.
Let’s start in Blender
The Maze Generator can be found here
https://github.com/elfnor/mesh_maze
Other kind of maze can be found here https://github.com/Gorgious56/MazeGenerator/releases creating a maze is not obvious. Results can be surprising and rewarding https://imgur.com/a/6u13JSG
A prior version was here : https://elfnor.com/maze-any-mesh-in-blender.html
The Blender Maze is prepared and painted into Unity
The ground is replaced by a Terrain Asset
The size fits to the actual ground, it could have been enlarged
It’s been sculpted
And painted
Additional pack can be added to enrich the environment
Add a mesh collider for the walls
Preparing the Maze for IA
It has to be Navigation Static
In navigation add 2 layers
The terrain is Walkable
Wall are not walkable
Ready to bake
The blue colour indicates that it worked
To test the camera is moved to an upper position.
To test IA, add a NavMesh component
And this script
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class MoveTarget : MonoBehaviour { public NavMeshAgent nmAgent; void Update() { //If the player has left clicked if (Input.GetMouseButtonDown(0)) { //Get the mouse Position Vector3 mouse = Input.mousePosition; //Cast a ray to get where the mouse is pointing at Ray castPoint = Camera.main.ScreenPointToRay(mouse); //Stores the position where the ray hit. RaycastHit hit; //If the raycast doesnt hit a wall if (Physics.Raycast(castPoint, out hit, Mathf.Infinity)) { nmAgent.SetDestination(hit.point); } } } } |
Test by clicking anywhere to see what path is used.
To explore the Maze we will use Third Person Controller – Basic Locomotion FREE
Drop it in the scene
Link the camera to have a TPS view
Adapt controls to the keyboard you use. Here are the French settings
Let’s try with another Maze done with Grasshopper
The Grasshopper definition will give a more complex Maze, it’ll a bit more complicated to set up.
Find all sources here : https://www.grasshopper3d.com/forum/topics/maze-from-mesh
We will use the 0.5 version from this page : https://www.grasshopper3d.com/forum/topics/maze-from-mesh but the 0.9 can be also tested.
Let’s open up Grasshopper :
First we design the Surface of the Maze : here it will be a 20×20 square
Then the surface is divided into a grid and the maze is calculated with the script
The output of the script gives the drawing of the Maze
Those lines will be transformed to walls
The result is baked with a Geometry Cache
A material has been created and apply, ready to be exported into Unity
Importing in Unity
Extract Textures
Voilà
As it was done before, let’s prepare the Maze for IA.
Let’s add a virus. The covid fits well….
We can now spread the virus randomly. See if it’s possible to reach the End Point without being contaminated.