Example #1
0
    // 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;
    }
Example #2
0
        /// <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);
            }
        }