예제 #1
0
    public void UpdateSelf()
    {
        if (!CamerasMgr.CameraUI.get_enabled())
        {
            ControlStick.Direction2ControlStick = Vector2.get_zero();
            return;
        }
        if (!this.IsDraging)
        {
            this.CheckTouchBegin();
            if (this.IsDraging)
            {
                EventDispatcher.Broadcast("UIStateSystem.ResetFPSSleep");
            }
            ControlStick.Direction2ControlStick = Vector2.get_zero();
            return;
        }
        if (this.TouchEnd())
        {
            this.TouchEndReset();
            return;
        }
        Vector2 offset = this.ChangeStickPositon();

        this.OffsetControlStickPos(offset);
        ControlStick.Direction2ControlStick = ControlStick.GetDirection();
    }
예제 #2
0
    /// <summary>
    /// Initialize the character
    /// </summary>
    new public virtual void Start()
    {
        moveStick      = new ControlStick();
        jumpAlarm      = ScriptableObject.CreateInstance <Alarm>();
        hitLagAlarm    = ScriptableObject.CreateInstance <Alarm>();
        spriteRenderer = this.gameObject.GetComponentInChildren <SpriteRenderer>();

        timer     = 0;
        velocity  = new Vector3(0f, 0f, 0f);
        position  = new Vector2(0f, 0f);
        knockback = new Vector3(0f, 0f, 0f);
        jumpCount = 0;

        // Pool the states
        currentState = new StateIdle(this);
        stateAttack  = new StateAttack(this);
        stateCrouch  = new StateCrouch(this);
        stateIdle    = new StateIdle(this);
        stateDash    = new StateDash(this);
        stateJump    = new StateJump(this);
        stateRun     = new StateRun(this);
        stateHurt    = new StateHurt(this);
        stateFall    = new StateFall(this);
        playerContactFilter.layerMask = playerMask;

        timerSpeed = 1;

        canJump   = true;
        canAttack = true;
    }
예제 #3
0
 private void TouchBeginSuccess(Vector2 vTouchPosBaseBottomL)
 {
     ControlStick.m_beginTouchBaseBottomL = vTouchPosBaseBottomL;
     this.ChangeControlStickPos(vTouchPosBaseBottomL);
     ControlStick.Direction2ControlStick = ControlStick.GetDirection();
     this.IsDraging = true;
 }
        void Update()
        {
            inputBuffer[1] = inputBuffer[0]; // shift
            inputBuffer[0] = new ControlStick(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
            // pan movement
            panTransform.position = new Vector3(initialPanPosition.x + inputBuffer[0].x * panDisplacement, initialPanPosition.y + inputBuffer[0].y * panDisplacement, initialPanPosition.z);
            // clamp
            inputBuffer[0] = new ControlStick(inputBuffer[0].x > threshold ? 1f : (inputBuffer[0].x < -threshold ? -1f : 0f), inputBuffer[0].y > threshold ? 1f : (inputBuffer[0].y < -threshold ? -1f : 0f));

            if (isInputAllowed)
            {
                // not diagonal, centered, or the same input
                if (Mathf.Abs(inputBuffer[0].x) != Mathf.Abs(inputBuffer[0].y) && inputBuffer[0] != inputBuffer[1])
                {
                    if (keys[c] == inputBuffer[0])
                    {
                        buttonSprites[c].color = Color.green;
                        AudioManager.instance.PlaySFX(correct, 1f);
                        food.SetActive(true);
                        foodTimer = foodDuration;
                    }
                    else
                    {
                        isWin = false;
                        buttonSprites[c].color = Color.red;
                        AudioManager.instance.PlaySFX(incorrect, 1f);
                        timer = duration;
                        food.SetActive(false);
                        foodTimer = 0f;
                    }
                    buttons[c++].SetActive(true);
                }
                bool isNotDone = c < buttons.Length;
                isInputAllowed = isNotDone;
                if (!isNotDone)
                {
                    slider.value = slider.minValue;
                }
            }

            AudioManager.instance.SetMusicPitch(speed += Time.deltaTime * deltaSpeed);
            if (timer > 0f)
            {
                bgTransform.position = initialBGPosition + Random.insideUnitSphere * magnitude;
                timer -= Time.deltaTime * dampening;
            }
            else
            {
                bgTransform.position = initialBGPosition;
            }
            if (foodTimer > 0f)
            {
                foodTimer -= Time.deltaTime;
            }
            else
            {
                food.SetActive(false);
            }
        }
예제 #5
0
 protected override void ReleaseSelf(bool calledDestroy)
 {
     if (SystemConfig.IsReleaseResourceOn && calledDestroy)
     {
         ControlStick.m_instance = null;
         base.ReleaseSelf(true);
     }
 }
예제 #6
0
 private void Awake()
 {
     base.AwakeBase(BindingContext.BindingContextMode.MonoBinding, false);
     ControlStick.m_instance = this;
     this.m_spBg             = base.FindTransform("ControlStickBg").GetComponent <Image>();
     this.m_spStick          = base.FindTransform("ControlStickDot").GetComponent <Image>();
     this.ShowBackground(false);
     this.SetBackgroundOfA(false);
     this.OnForbiddenStick(true);
     base.Invoke("DelayInit", 0.1f);
 }
 void Awake()
 {
     slider = GetComponentInChildren <Slider>();
     Text[] texts = GetComponentsInChildren <Text>();
     memorizeText     = texts[0];
     repeatText       = texts[1];
     inputBuffer      = new ControlStick[2];
     identityStick    = new ControlStick[4];
     identityStick[0] = new ControlStick(0f, 1f);  // up
     identityStick[1] = new ControlStick(-1f, 0f); // left
     identityStick[2] = new ControlStick(0f, -1f); // down
     identityStick[3] = new ControlStick(1f, 0f);  // right
     minButtons       = 3;
     deltaButtons     = 1f;
     isWin            = true;
     speed            = 1f;
     panDisplacement  = 2f;
 }
        IEnumerator GameLoop(ushort loops)
        {
            slider.gameObject.SetActive(memorizeText.enabled = repeatText.enabled = false);
            AudioManager.instance.PlayMusic(music, 1f, speed, true);
            yield return(new WaitForSeconds(initialWaitTime));

            for (ushort h = 0; h < loops; h++)
            {
                c = 0;
                slider.maxValue      = maxTime;
                slider.value         = slider.minValue;
                memorizeText.enabled = true;

                // generate new set of buttons and placeholders
                int size = Mathf.RoundToInt(Random.value * deltaButtons) + minButtons;
                buttons       = new GameObject[size];
                buttonSprites = new SpriteRenderer[size];
                keys          = new ControlStick[size];

                float j = -buttons.Length - 1;
                for (ushort i = 0; i < buttons.Length; i++)
                {
                    j               += 2;
                    buttons[i]       = Instantiate(buttonPrefab, new Vector3(j, 0f, 0f), Quaternion.Euler(0f, 0f, RandomDirection(i)));
                    buttonSprites[i] = buttons[i].GetComponent <SpriteRenderer>();
                }

                slider.gameObject.SetActive(true);
                // memorize
                while (slider.value < slider.maxValue)
                {
                    slider.value += Time.deltaTime;
                    yield return(null);
                }
                slider.gameObject.SetActive(false);
                memorizeText.enabled = false;

                // hide buttons
                foreach (GameObject button in buttons)
                {
                    button.SetActive(false);
                }

                slider.value       = slider.maxValue = absoluteMaxTime;
                repeatText.enabled = true;
                slider.gameObject.SetActive(true);
                // repeat
                isInputAllowed = true;
                while (slider.value > slider.minValue)
                {
                    slider.value -= Time.deltaTime;
                    yield return(null); // yields for Update()
                }
                isInputAllowed = false;
                slider.gameObject.SetActive(false);
                repeatText.enabled = false;
                if (c < buttons.Length)
                {
                    isWin = false;
                }

                // compare results
                foreach (GameObject button in buttons)
                {
                    button.SetActive(true);
                }
                yield return(new WaitForSeconds(waitTime));

                // clean up
                foreach (GameObject button in buttons)
                {
                    Destroy(button);
                }

                if (!isWin)
                {
                    AudioManager.instance.StopMusic();
                    MinigameManager.FinishMinigame(isWin);
                    yield break;
                }

                // up the ante
                minButtons++;
                yield return(null);
            }

            AudioManager.instance.StopMusic();
            MinigameManager.FinishMinigame(isWin);
        }
예제 #9
0
 void OnEnable()
 {
     instance = this;
 }
예제 #10
0
 public void InitInstance()
 {
     instance = this;
 }
예제 #11
0
 void OnEnable()
 {        
     instance = this;
 }
예제 #12
0
 public void InitInstance()
 {
     instance = this;
 }