void Update() { UpdateControllerStates(); for (int i = 0; i < 4; ++i) { ControllerPlayer p = ControllerPlayers[i]; // check if connected if (!p.IsControllerConnected()) { PlaneSlots[i].SetActive(false); } else { PlaneSlots[i].SetActive(true); } if (selected >= 2) { StartGameText.SetActive(true); if (p.ButtonPressedRightNow(ButtonsToPress.Start)) { StartGameAndFindControllers(); } } else { StartGameText.SetActive(false); } // can move when thumbstick resets if (p.LeftStick().x == 0) { readyToMoveSlot[i] = true; } // go right (character select) if (p.LeftStick().x > 0.7 && readyToMoveSlot[i] && MyCharacter[i] == null) { if (currentSlots[i] + 1 <= 3) { currentSlots[i]++; } else { currentSlots[i] = 0; } FourCamerasSpots[i].transform.position = FourSlots[currentSlots[i]].transform.position; readyToMoveSlot[i] = false; Transform rightArrow = PlaneSlots[i].GetComponent <CharPlaneMenuNav>().ReadyObjects[2].transform; rightArrow.localScale = new Vector3(0.2981013f, 0.1465021f, 0.1377661f); GoKitTweenExtensions.shake(rightArrow, 0.5f, new Vector3(0.2f, 0.2f, 0.2f), GoShakeType.Scale); audio.PlayOneShot(ForwardMenuSound); } // go left (character select) else if (p.LeftStick().x < -0.7 && readyToMoveSlot[i] && MyCharacter[i] == null) { if (currentSlots[i] - 1 >= 0) { currentSlots[i]--; } else { currentSlots[i] = 3; } FourCamerasSpots[i].transform.position = FourSlots[currentSlots[i]].transform.position; readyToMoveSlot[i] = false; Transform leftArrow = PlaneSlots[i].GetComponent <CharPlaneMenuNav>().ReadyObjects[1].transform; leftArrow.localScale = new Vector3(0.2981013f, 0.1465021f, 0.1377661f); GoKitTweenExtensions.shake(leftArrow, 0.5f, new Vector3(0.2f, 0.2f, 0.2f), GoShakeType.Scale); audio.PlayOneShot(BackwardMenuSound); } // character already selected by another player? if (CharacterSelect[currentSlots[i]].Selected && CharacterSelect[currentSlots[i]] != MyCharacter[i]) { PlaneSlots[i].renderer.material.color = new Color(0.1f, 0.1f, 0.1f); PlaneSlots[i].GetComponent <CharPlaneMenuNav>().CanUseAButtonRightNow(false); } else if (CharacterSelect[currentSlots[i]] == MyCharacter[i]) // I selected the character { PlaneSlots[i].renderer.material.color = Color.white; PlaneSlots[i].GetComponent <CharPlaneMenuNav>().CanUseAButtonRightNow(false); } else // character not selected by anybody { PlaneSlots[i].renderer.material.color = new Color(0.4f, 0.4f, 0.4f); PlaneSlots[i].GetComponent <CharPlaneMenuNav>().CanUseAButtonRightNow(true); } // select character if (p.ButtonPressedRightNow(ButtonsToPress.A)) { if (!CharacterSelect[currentSlots[i]].Selected) { CharacterSelect[currentSlots[i]].Selected = true; MyCharacter[i] = CharacterSelect[currentSlots[i]]; CharacterSelect[currentSlots[i]].PlayerChosenSlot = (int)p.Index; audio.PlayOneShot(SelectSounds[selected]); selected++; PlaneSlots[i].transform.position = OriginalPositions[i]; PlaneSlots[i].transform.localScale = OriginalScales[i]; PlaneSlots[i].GetComponent <CharPlaneMenuNav>().SetReadyState(true); GoKitTweenExtensions.shake(PlaneSlots[i].transform, 0.5f, new Vector3(0.2f, 0.2f, 0.2f), GoShakeType.Position); } } // deselect character else if (p.ButtonPressedRightNow(ButtonsToPress.B)) { if (CharacterSelect[currentSlots[i]].Selected && CharacterSelect[currentSlots[i]] == MyCharacter[i]) { audio.PlayOneShot(CancelSound); CharacterSelect[currentSlots[i]].Selected = false; MyCharacter[i] = null; selected--; CharacterSelect[currentSlots[i]].PlayerChosenSlot = -10; PlaneSlots[i].transform.position = OriginalPositions[i]; PlaneSlots[i].transform.localScale = OriginalScales[i]; PlaneSlots[i].GetComponent <CharPlaneMenuNav>().SetReadyState(false); GoKitTweenExtensions.shake(PlaneSlots[i].transform, 0.5f, new Vector3(0.1f, 0.1f, 0.1f), GoShakeType.Scale); } } // rotate screen left (controller) if (p.ButtonPressedRightNow(ButtonsToPress.LT) || p.ButtonPressedRightNow(ButtonsToPress.LB)) { iTween.RotateBy(gameObject, iTween.Hash("y", -0.25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete", "GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); } // rotate screen right (controller) else if (p.ButtonPressedRightNow(ButtonsToPress.RT) || p.ButtonPressedRightNow(ButtonsToPress.RB)) { iTween.RotateBy(gameObject, iTween.Hash("y", .25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete", "GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); } // rotate screen left (keyboard) else if (Input.GetKeyDown(KeyCode.LeftArrow)) { iTween.RotateBy(gameObject, iTween.Hash("y", -0.25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete", "GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); } // rotate screen right (keyboard) else if (Input.GetKeyDown(KeyCode.RightArrow)) { iTween.RotateBy(gameObject, iTween.Hash("y", .25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete", "GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); } } //if (Input.GetKeyDown(KeyCode.RightArrow)) // iTween.RotateBy(gameObject, iTween.Hash("y", .25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete","GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); //else if (Input.GetKeyDown(KeyCode.LeftArrow)) // iTween.RotateBy(gameObject, iTween.Hash("y", -0.25, "easeType", "easeInOutBack", "onstart", "Pitch", "oncomplete","GlitchNow", "loopType", iTween.LoopType.none, "delay", .4)); // smash-styled rotation ... does notwork /*float x = Input.GetAxis("Horizontal"); * float y = Input.GetAxis("Vertical"); * Vector3 movement = new Vector3(-y, x, 0); * transform.RotateAround(transform.position, movement, 50 * Time.deltaTime);*/ if (pitch) { timer += Time.deltaTime * 5; float fracJourney = timer / 5; float lerp = Mathf.Lerp(1, 2f, fracJourney); MusicAudioSource.pitch = lerp; if (MusicAudioSource.pitch >= 2f) { pitch = false; MusicAudioSource.pitch = 1; timer = 0; } } if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit(); } foreach (ControllerPlayer p in ControllerPlayers) { p.previousState = p.state; } }