//////////////////////////////////////////////////////////////// public void NewSong() { audioSource.clip = music[Random.Range(0, music.Count)]; length = audioSource.clip.length; audioSource.Play(); DebugManager.GetInstance().Print(this.ToString(), "Playing new song: " + audioSource.clip.name + " Length: " + audioSource.clip.length); }
//change room public void ChangeRoom(GameObject newDoor) { room++; DebugManager.GetInstance().Print(this.ToString(), "Info: Walked into room " + room); proceedText.GetComponent <Text>().text = " "; //fix error for first room if (currentDoor != null) { currentDoor.SetActive(true); } currentDoor = newDoor; }
//check if win or proceed public override void Cleared() { if (room >= length) { Win(); DebugManager.GetInstance().Print(this.ToString(), "Info: Player win"); } else { proceedText.text = "PROCEED TO NEXT ROOM"; DebugManager.GetInstance().Print(this.ToString(), "Info: Cleared room " + room); } }
private void Start() { _drawPathToggle.onValueChanged.AddListener(delegate { DebugManager.GetInstance().OnDrawPathToggleChanged(_drawPathToggle.isOn); }); _drawRegionsToggle.onValueChanged.AddListener(delegate { DebugManager.GetInstance().OnDrawRegionsToggleChanged(_drawRegionsToggle.isOn); }); }
void Input_FirstPerson() { //basic movement if (Input.GetKey(KeyCode.W)) { transform.position += transform.forward * movementSpeed * Time.deltaTime; moving = true; } else if (Input.GetKey(KeyCode.S)) { transform.position -= transform.forward * movementSpeed * Time.deltaTime; moving = true; } if (Input.GetKey(KeyCode.D)) { transform.position += transform.right * movementSpeed * Time.deltaTime; moving = true; } else if (Input.GetKey(KeyCode.A)) { transform.position -= transform.right * movementSpeed * Time.deltaTime; moving = true; } //jump //must be near to ground (near, not on) if (Input.GetKeyDown(KeyCode.Space) && Physics.Raycast(transform.position, transform.TransformDirection(Vector3.down), jumpLimit)) { rb.AddForce(Vector3.up * jumpHeight, ForceMode.Impulse); } if (rb.velocity.y < -2) { rb.velocity += Vector3.down * fallSpeed; } flying = true; if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.down), jumpLimit)) { flying = false; } if (Input.GetKey(KeyCode.Space) && flying) { if (flyingFill > 0) { rb.AddForce(Vector3.up * flyingPower, ForceMode.Force); flyingFill -= Time.deltaTime * flyingUseRate; flyingSlider.value = flyingFill; } } if (flyingFill < flyingFillMax) { flyingFill += Time.deltaTime * flyingRecovoryRate; flyingSlider.value = flyingFill; } //crouch mode //will move slower //shorter boxcollider //player will have to move to make room for new collider if (Input.GetKeyDown(KeyCode.LeftControl) && crouching == false) { boxCol.size = new Vector3(1, 1, 1); transform.position = new Vector3(transform.position.x, transform.position.y - 0.3f, transform.position.z); crouching = !crouching; movementSpeed -= 5; } else if (Input.GetKeyUp(KeyCode.LeftControl) && crouching == true || Input.GetKeyDown(KeyCode.Space) && crouching == true) { boxCol.size = new Vector3(1, 2, 1); transform.position = new Vector3(transform.position.x, transform.position.y + 0.3f, transform.position.z); crouching = !crouching; movementSpeed += 5; } //make player y rotation same as camera transform.rotation = Quaternion.Euler(0, playerPerspectiveCamera.transform.eulerAngles.y, 0); if (Input.GetKeyUp(KeyCode.W) || Input.GetKeyUp(KeyCode.S) || Input.GetKeyUp(KeyCode.D) || Input.GetKeyUp(KeyCode.A)) { StartCoroutine(notMoving()); } if (Input.GetKeyUp(KeyCode.P)) { DebugManager.GetInstance().ChangeConsoleState(); } }
//////////////////////////////////////////////////////////////// public void Initialize() { //////////////////////////////////////////////////////////////// foreach (Transform trans in GameObject.Find("PlaceholderBullets").transform) { prefabBullets.Add(trans.name, trans.gameObject); } //////////////////////////////////////////////////////////////// int[] mostUsed = new int[toMake.Keys.Count]; List <string> bulletTypes = new List <string>(prefabBullets.Keys); foreach (string room in rooms) { for (int i = 0; i < prefabBullets.Keys.Count; i++) { if (users[room].ContainsKey(bulletTypes[i])) { if (users[room][bulletTypes[i]] > mostUsed[i]) { mostUsed[i] = users[room][bulletTypes[i]]; } } } } //////////////////////////////////////////////////////////////// List <string> keys = new List <string>(toMake.Keys); for (int i = 0; i < keys.Count; i++) { toMake[keys[i]] = Mathf.RoundToInt(toMake[keys[i]] * mostUsed[i]); toMake[keys[i]] += 200; if (toMake[keys[i]] > 2000) { toMake[keys[i]] = 2000; } DebugManager.GetInstance().Print(this.ToString(), "To make: " + keys[i] + " " + toMake[keys[i]]); inventory.Add(keys[i], 0); created.Add(keys[i], 0); //////////////////////////////////////////////////////////////// //get correct bullet in scene GameObject bullet = new GameObject(); foreach (GameObject b in prefabBullets.Values) { if (b.name == keys[i]) { bullet = b; break; } } //make bullets if (transform.Find(keys[i] + "list") == false) { GameObject list = new GameObject(); list.name = keys[i] + "list"; list.transform.parent = transform; Instantiate(bullet, list.transform); } } //////////////////////////////////////////////////////////////// DebugManager.GetInstance().Print(this.ToString(), "Info: Set bullet limits"); }
public void CreateRoomLevel(int length) { //////////////////////////////////////////////////////////////// GameObject map = GameObject.Find("Map"); List <Vector3> vectorList = new List <Vector3>(); //positions for rooms List <GameObject> rooms = new List <GameObject>(); //room objects List <GameObject> specialRooms = new List <GameObject>(); //rooms with special placement //////////////////////////////////////////////////////////////// // ADD ROOM POSITIONS //////////////////////////////////////////////////////////////// for (int i = 0; i < length; i++) { vectorList.Add(new Vector3(0, 0, i * roomSize)); } //////////////////////////////////////////////////////////////// // GET AVAILABLE ROOMS //////////////////////////////////////////////////////////////// foreach (Transform t in map.transform) { if (t.GetComponent <Room>().startRoom || t.GetComponent <Room>().endRoom) { specialRooms.Add(t.gameObject); } else { rooms.Add(t.gameObject); } } //////////////////////////////////////////////////////////////// // DESTROY AND RECREATE MAP //////////////////////////////////////////////////////////////// Destroy(map); map = new GameObject(); map.name = "Map"; //navmeshsurface to rebuild navmesh map.AddComponent <NavMeshSurface>(); //////////////////////////////////////////////////////////////// // PLACE THE ROOMS //////////////////////////////////////////////////////////////// int counter = 1; foreach (Vector3 vec in vectorList) { bool special = false; foreach (GameObject go in specialRooms) { if (go.GetComponent <Room>().GetPosY() == vec.z / roomSize) { GameObject room = Instantiate(go, vec, Quaternion.identity); room.transform.parent = map.transform; room.name += counter; special = true; } } if (special == false) { GameObject room = Instantiate(rooms[Random.Range(0, rooms.Count)], vec, Quaternion.identity); room.transform.parent = map.transform; room.name += counter; } counter++; } map.GetComponent <NavMeshSurface>().BuildNavMesh(); DebugManager.GetInstance().Print(this.ToString(), "Info: Built map"); //////////////////////////////////////////////////////////////// // INITIALIZE ENEMIES //////////////////////////////////////////////////////////////// Enemy[] enemies = FindObjectsOfType <Enemy>(); foreach (Enemy enemy in enemies) { enemy.Initialize(); } AnimatedObstacle[] obstacles = FindObjectsOfType <AnimatedObstacle>(); foreach (AnimatedObstacle obstacle in obstacles) { obstacle.Initialize(); } //////////////////////////////////////////////////////////////// DebugManager.GetInstance().Print(this.ToString(), "Info: Initialized Enemies"); }