// Update is called once per frame void Update() { Vector2 LeapPosition = leapMotion.PalmOnViewportXZ(); var velocityX = 0.5f - LeapPosition.x; var velocityY = 0.5f - LeapPosition.y; if (playerScript.IsDead && leapMotion.ExtendedFingers() == 4) { SceneManager.LoadScene("1"); } if (characterController.gameObject.activeInHierarchy) { points += (BonusPerSecond * Time.deltaTime * velocity.sqrMagnitude * 10) + BonusPerSecond * Time.deltaTime / 5; pointsText.text = Mathf.RoundToInt(points).ToString(); } if (!leapMotion.IsUsed() && LeapPosition.x == -1 && LeapPosition.y == -1) { animtor.SetFloat("Speed", 0); characterController.Move(Vector3.down * Time.deltaTime * DeJumpDuration); return; } velocityX *= -1; velocity = new Vector3(velocityX, 0, velocityY) * speed; characterController.transform.rotation = new Quaternion(velocityY / 15, -velocityX / 15, -velocityX / 13, 1); rotationTarget.rotation = new Quaternion(velocityY * 5, -velocityX * 5, -velocityX * 5, 1); if (!inJump) { inJump = leapMotion.ExtendedFingers() == 0; } else { hightJump = leapMotion.ExtendedFingers() > 0 && leapMotion.ExtendedFingers() < 3 && curJumpDuration != 0; inJump = hightJump || leapMotion.ExtendedFingers() == 0; } if (hightJump) { curJumpDuration = Mathf.Clamp(curJumpDuration - Time.deltaTime, 0, HeightJumpDuration); } else if (inJump) { curJumpDuration = Mathf.Clamp(curJumpDuration - Time.deltaTime / 2, 0, HeightJumpDuration); } else { curJumpDuration = Mathf.Clamp(curJumpDuration + Time.deltaTime, 0, HeightJumpDuration); } animtor.SetBool("IsJumping", inJump); if (hightJump) { flameSound.mute = false; hightJumpParticles.Play(); flameSound.volume = 1; } else { if (inJump) { normalJumpParticles.Play(); flameSound.mute = false; flameSound.volume = 0.3f; hightJumpParticles.Stop(); } else { normalJumpParticles.Stop(); hightJumpParticles.Stop(); flameSound.mute = true; } } if (!hightJump) { curY = inJump ? jumpHeight : -jumpHeight * DeJumpDuration; if (characterController.transform.position.y < 0.1f && !inJump) { curY = 0; } } else { curY += HeightJumpSpeed * Time.deltaTime; } //characterController.transform.position = new Vector3(characterController.transform.position.x, curY, characterController.transform.position.z); velocity += Vector3.up * curY * Time.deltaTime; Debug.Log(leapMotion.ExtendedFingers() + " curY: " + curY); characterController.Move(velocity); animtor.SetFloat("Speed", velocity.magnitude); jumpBar.fillAmount = curJumpDuration / HeightJumpDuration; }
/// <summary> /// Képkockafrissítés. /// </summary> void Update() { // Menüműveletek kezelése if (SelectedMenuItem != -1) { switch (SelectedMenu) { case 0: // Főmenü switch (SelectedMenuItem) { case 0: SpawnModeSelect(); break; // Új játék case 1: SpawnCustomizationMenu(); break; // Testreszabás case 2: Application.Quit(); return; // Kilépés } break; case 1: // Testreszabás int BladeCount = Blades.Length; if (SelectedMenuItem == BladeCount + Wallpapers.Length) // Vissza { SpawnMainMenu(); } else if (SelectedMenuItem != -1) // Kiválasztott elemek { if (SelectedMenuItem < BladeCount) { if (!MenuItems[SelectedMenuItem].Action.StartsWith("Reach")) { PlayerPrefs.SetInt("Blade", SetBlade(SelectedMenuItem)); } } else { if (!MenuItems[SelectedMenuItem].Action.StartsWith("Combo")) { PlayerPrefs.SetInt("Wallpaper", SetBackground(SelectedMenuItem - BladeCount)); } } SpawnCustomizationMenu(SelectedMenuItem < BladeCount + Wallpapers.Length ? SelectedMenuItem : -1); } break; case 2: // Játékmódválasztó if (SelectedMenuItem == 0) { SpawnMainMenu(); } else { LaunchGame((GameModes)SelectedMenuItem); } break; case 3: // Game Over if (SelectedMenuItem == 0) // Újra { LaunchGame(); // Új játék SelectedMenu = 0; // Enélkül maradna a Game Over UI } else // Főmenü { GameMode = GameModes.ScoreAttack; // Ha többjátékos lenne, használható lenne a player 2 pointer, árkádban pedig powerupok kerülnének a menübe SpawnMainMenu(); // Menü megjelenítése } break; default: break; } DisableInput = .25f; } SelectedMenuItem = -1; // Játék kezelése if (Playing) { Dispenser.DispenserUpdate(); // Dobáló frissítése // Kombó kiértékelése SinceLastCombo += Time.deltaTime; if (SinceLastCombo > .15f && GameMode != GameModes.Multiplayer) { if (ThisCombo > 2) { if (BestCombo < ThisCombo) { BestCombo = ThisCombo; } GameObject Marker = new GameObject(); Marker.transform.position = LastHit; ComboMarker ComboMark = Marker.AddComponent <ComboMarker>(); ComboMark.Combo = ThisCombo; ComboMark.Duration *= Time.timeScale; Score += ThisCombo; } ThisCombo = 0; } // Pontgyűjtő módok if (GameMode == GameModes.ScoreAttack || GameMode == GameModes.Multiplayer) { if (LoseLife) { if (--Lives == 0) { Playing = false; GameOver(); } LoseLife = false; } // Idő elleni módok } else if (GameMode == GameModes.TimeAttack || GameMode == GameModes.Arcade) { TimeRemaining -= Time.deltaTime / Time.timeScale; if (TimeRemaining <= 0) { Playing = false; GameOver(); } } } // Menüobjektumok elhelyezése for (int i = 0; i < MenuItems.Length; i++) { MenuItems[i].Obj.transform.position = new Vector3(Mathf.Lerp(CloserBL.x, CloserBR.x, MenuItems[i].ScreenPos.x), Mathf.Lerp(CloserBL.y, CloserTL.y, MenuItems[i].ScreenPos.y), Mathf.Lerp(CloserBL.z, CloserBR.z, MenuItems[i].ScreenPos.x)); MenuItems[i].ActualScrPos = Camera.main.WorldToScreenPoint(MenuItems[i].Obj.transform.position); } // Kurzor helye a kijelzőn és a világban Vector2 LookPosition = new Vector2(-1, -1), OldPosition = new Vector2(), OldP2Position = new Vector2(); switch (PreviousController) { case Controllers.Mouse: OldPosition = MousePosition; LookPosition = MousePosition = Input.mousePosition; if (Leap.SinglePointOnScreen().x != -1) // Ha megmozdul a LeapMotion, váltson rá { CurrentController = Controllers.LeapMotion; } break; case Controllers.LeapMotion: int HalfLeapSpaceHeight = (int)(Screen.height * (Leap.LeapUpperBounds.x - Leap.LeapLowerBounds.x) / Screen.width) / 2; Leap.LeapLowerBounds.y = 200 - HalfLeapSpaceHeight; Leap.LeapUpperBounds.y = 200 + HalfLeapSpaceHeight; int ExtendedFingers = Leap.ExtendedFingers(); if (Leap.GetHandCount() != 0 && ExtendedFingers != 0) { OldPosition = LeapPosition; LookPosition = LeapPosition = ExtendedFingers == 1 ? Leap.SinglePointOnScreen() : Leap.PalmOnScreen(); } if (GameMode == GameModes.Multiplayer) { OldP2Position = MousePosition; MousePosition = Input.mousePosition; } else if (MousePosition.x != Input.mousePosition.x || MousePosition.y != Input.mousePosition.y) // Ha megmozdul az egér, váltson rá { CurrentController = Controllers.Mouse; } break; case Controllers.HoloLens: OldPosition = LookPosition = new Vector2(Screen.width / 2, Screen.height / 2); break; } if (PreviousController != CurrentController || (LookPosition.x == -1 && LookPosition.y == -1)) { OldPosition = LookPosition; // Ha bármiféle eszközcsere/inputkiesés történt, ne vágjon semmit... Pointer.GetComponent <TrailRenderer>().Clear(); // ...és az előző vágási nyomvonal tűnjön el, mivel nem az folytatódik már } PreviousController = CurrentController; PointerHandler(ref Pointer, ref OldPosition, ref LookPosition, ref Score, ref LookPoint); if (GameMode == GameModes.Multiplayer) { PointerHandler(ref Player2, ref OldP2Position, ref MousePosition, ref ScoreP2, ref LookPointP2); } }