add games
This commit is contained in:
26
assignment9final/Assets/Scripts/DontDestroy.cs
Normal file
26
assignment9final/Assets/Scripts/DontDestroy.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class DontDestroy : MonoBehaviour {
|
||||
|
||||
// make this static so it's visible across all instances
|
||||
public static DontDestroy instance = null;
|
||||
|
||||
// singleton pattern; make sure only one of these exists at one time, else we will
|
||||
// get an additional set of sounds with every scene reload, layering on the music
|
||||
// track indefinitely
|
||||
void Awake() {
|
||||
if (instance == null) {
|
||||
instance = this;
|
||||
DontDestroyOnLoad(gameObject);
|
||||
} else if (instance != this) {
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/DontDestroy.cs.meta
Normal file
11
assignment9final/Assets/Scripts/DontDestroy.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c034fe157d6dd4360913dd81358c6986
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
assignment9final/Assets/Scripts/GrabPickups.cs
Normal file
21
assignment9final/Assets/Scripts/GrabPickups.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class GrabPickups : MonoBehaviour {
|
||||
|
||||
private AudioSource pickupSoundSource;
|
||||
|
||||
void Awake() {
|
||||
pickupSoundSource = DontDestroy.instance.GetComponents<AudioSource>()[1];
|
||||
}
|
||||
|
||||
void OnControllerColliderHit(ControllerColliderHit hit) {
|
||||
if (hit.gameObject.tag == "Pickup") {
|
||||
TrackLevel.current_level++;
|
||||
pickupSoundSource.Play();
|
||||
SceneManager.LoadScene("Play");
|
||||
}
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/GrabPickups.cs.meta
Normal file
11
assignment9final/Assets/Scripts/GrabPickups.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 28dcece8f24734b5aa46e98c0547fecd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
140
assignment9final/Assets/Scripts/LevelGenerator.cs
Normal file
140
assignment9final/Assets/Scripts/LevelGenerator.cs
Normal file
@@ -0,0 +1,140 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class LevelGenerator : MonoBehaviour {
|
||||
|
||||
public GameObject floorPrefab;
|
||||
public GameObject wallPrefab;
|
||||
public GameObject ceilingPrefab;
|
||||
|
||||
public GameObject characterController;
|
||||
|
||||
public GameObject floorParent;
|
||||
public GameObject wallsParent;
|
||||
|
||||
// allows us to see the maze generation from the scene view
|
||||
public bool generateRoof = true;
|
||||
|
||||
// number of times we want to "dig" in our maze
|
||||
public int tilesToRemove = 50;
|
||||
|
||||
public int mazeSize;
|
||||
|
||||
// spawns at the end of the maze generation
|
||||
public GameObject pickup;
|
||||
|
||||
// this will determine whether we've placed the character controller
|
||||
private bool characterPlaced = false;
|
||||
|
||||
// 2D array representing the map
|
||||
private bool[,] mapData;
|
||||
|
||||
// we use these to dig through our maze and to spawn the pickup at the end
|
||||
private int mazeX = 4, mazeY = 1;
|
||||
|
||||
// the number of missing floor tiles to make
|
||||
public int missingFloors = 4;
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
|
||||
// initialize map 2D array
|
||||
mapData = GenerateMazeData();
|
||||
|
||||
// create actual maze blocks from maze boolean data
|
||||
for (int z = 0; z < mazeSize; z++) {
|
||||
for (int x = 0; x < mazeSize; x++) {
|
||||
// create floor and ceiling
|
||||
if (!mapData[z, x] && characterPlaced && missingFloors > 0) {
|
||||
if (Random.Range(0f, 100f) > 5f) {
|
||||
CreateChildPrefab(floorPrefab, floorParent, x, 0, z);
|
||||
}
|
||||
else {
|
||||
missingFloors--;
|
||||
}
|
||||
}
|
||||
else {
|
||||
CreateChildPrefab(floorPrefab, floorParent, x, 0, z);
|
||||
}
|
||||
|
||||
if (mapData[z, x]) {
|
||||
CreateChildPrefab(wallPrefab, wallsParent, x, 1, z);
|
||||
CreateChildPrefab(wallPrefab, wallsParent, x, 2, z);
|
||||
CreateChildPrefab(wallPrefab, wallsParent, x, 3, z);
|
||||
} else if (!characterPlaced) {
|
||||
|
||||
// place the character controller on the first empty wall we generate
|
||||
characterController.transform.SetPositionAndRotation(
|
||||
new Vector3(x, 1, z), Quaternion.identity
|
||||
);
|
||||
|
||||
// flag as placed so we never consider placing again
|
||||
characterPlaced = true;
|
||||
}
|
||||
|
||||
if (generateRoof) {
|
||||
CreateChildPrefab(ceilingPrefab, wallsParent, x, 4, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// spawn the pickup at the end
|
||||
var myPickup = Instantiate(pickup, new Vector3(mazeX, 1, mazeY), Quaternion.identity);
|
||||
myPickup.transform.localScale = new Vector3(0.25f, 0.25f, 0.25f);
|
||||
}
|
||||
|
||||
// generates the booleans determining the maze, which will be used to construct the cubes
|
||||
// actually making up the maze
|
||||
bool[,] GenerateMazeData() {
|
||||
bool[,] data = new bool[mazeSize, mazeSize];
|
||||
|
||||
// initialize all walls to true
|
||||
for (int y = 0; y < mazeSize; y++) {
|
||||
for (int x = 0; x < mazeSize; x++) {
|
||||
data[y, x] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// counter to ensure we consume a minimum number of tiles
|
||||
int tilesConsumed = 0;
|
||||
|
||||
// iterate our random crawler, clearing out walls and straying from edges
|
||||
while (tilesConsumed < tilesToRemove) {
|
||||
|
||||
// directions we will be moving along each axis; one must always be 0
|
||||
// to avoid diagonal lines
|
||||
int xDirection = 0, yDirection = 0;
|
||||
|
||||
if (Random.value < 0.5) {
|
||||
xDirection = Random.value < 0.5 ? 1 : -1;
|
||||
} else {
|
||||
yDirection = Random.value < 0.5 ? 1 : -1;
|
||||
}
|
||||
|
||||
// random number of spaces to move in this line
|
||||
int numSpacesMove = (int)(Random.Range(1, mazeSize - 1));
|
||||
|
||||
// move the number of spaces we just calculated, clearing tiles along the way
|
||||
for (int i = 0; i < numSpacesMove; i++) {
|
||||
mazeX = Mathf.Clamp(mazeX + xDirection, 1, mazeSize - 2);
|
||||
mazeY = Mathf.Clamp(mazeY + yDirection, 1, mazeSize - 2);
|
||||
|
||||
if (data[mazeY, mazeX]) {
|
||||
data[mazeY, mazeX] = false;
|
||||
tilesConsumed++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
// allow us to instantiate something and immediately make it the child of this game object's
|
||||
// transform, so we can containerize everything. also allows us to avoid writing Quaternion.
|
||||
// identity all over the place, since we never spawn anything with rotation
|
||||
void CreateChildPrefab(GameObject prefab, GameObject parent, int x, int y, int z) {
|
||||
var myPrefab = Instantiate(prefab, new Vector3(x, y, z), Quaternion.identity);
|
||||
myPrefab.transform.parent = parent.transform;
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/LevelGenerator.cs.meta
Normal file
11
assignment9final/Assets/Scripts/LevelGenerator.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db3ffa0b6d58a4a0fbfdf37a50317e6c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
19
assignment9final/Assets/Scripts/LoadSceneOnInput.cs
Normal file
19
assignment9final/Assets/Scripts/LoadSceneOnInput.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class LoadSceneOnInput : MonoBehaviour {
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
if (Input.GetAxis("Submit") == 1) {
|
||||
SceneManager.LoadScene("Play");
|
||||
}
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/LoadSceneOnInput.cs.meta
Normal file
11
assignment9final/Assets/Scripts/LoadSceneOnInput.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 501015dae5a074d10b3fbc36de961106
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
16
assignment9final/Assets/Scripts/Pickup.cs
Normal file
16
assignment9final/Assets/Scripts/Pickup.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class Pickup : MonoBehaviour {
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
transform.Rotate(0, 5f, 0, Space.World);
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/Pickup.cs.meta
Normal file
11
assignment9final/Assets/Scripts/Pickup.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0ac9080d2980d4feb883627c63731b3a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
22
assignment9final/Assets/Scripts/ReturnToTitle.cs
Normal file
22
assignment9final/Assets/Scripts/ReturnToTitle.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class ReturnToTitle : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (Input.GetAxis("Submit") == 1)
|
||||
{
|
||||
SceneManager.LoadScene("Title");
|
||||
}
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/ReturnToTitle.cs.meta
Normal file
11
assignment9final/Assets/Scripts/ReturnToTitle.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6be9b6dc04ee792fcb349a54cb72dc67
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
19
assignment9final/Assets/Scripts/StopWhispers.cs
Normal file
19
assignment9final/Assets/Scripts/StopWhispers.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class StopWhispers : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
GameObject whispers = GameObject.Find("WhisperSource");
|
||||
Destroy(whispers);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/StopWhispers.cs.meta
Normal file
11
assignment9final/Assets/Scripts/StopWhispers.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4a1d4ef61c0769670b46f61d24914fe4
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
23
assignment9final/Assets/Scripts/TrackLevel.cs
Normal file
23
assignment9final/Assets/Scripts/TrackLevel.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class TrackLevel : MonoBehaviour
|
||||
{
|
||||
public static int current_level = 0;
|
||||
private Text m_TextComponent;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
GameObject level = GameObject.Find("Level");
|
||||
m_TextComponent = level.GetComponent<Text>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
m_TextComponent.text = "Level: " + current_level;
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/TrackLevel.cs.meta
Normal file
11
assignment9final/Assets/Scripts/TrackLevel.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 45b6a5742f846e5dbafd74a08fc2615e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
24
assignment9final/Assets/Scripts/WatchForFall.cs
Normal file
24
assignment9final/Assets/Scripts/WatchForFall.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class WatchForFall : MonoBehaviour
|
||||
{
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
GameObject player = GameObject.Find ("FPSController");
|
||||
|
||||
if (player.transform.position.y < -1) {
|
||||
TrackLevel.current_level = 0;
|
||||
SceneManager.LoadScene("GameOver");
|
||||
}
|
||||
}
|
||||
}
|
11
assignment9final/Assets/Scripts/WatchForFall.cs.meta
Normal file
11
assignment9final/Assets/Scripts/WatchForFall.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bf2dc0b95470d3519954eea86e57b2c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user