Exemplo n.º 1
0
    private void Update()
    {
        if (this.gameObject == selectedMembrane)
        {
            glowingEffect.SetActive(true); //터치하면 선택 이미지를 활성화한다.
            if (padDirection.getIsTouch())
            {
                double angle = Mathf.Atan2(padDirection.getDirection().x, padDirection.getDirection().y) * (180.0 / Mathf.PI);
                this.transform.rotation = Quaternion.Euler(0, 0, -(float)angle); //조이스틱의 방향에 따라 방향을 변경
                membraneDirection       = padDirection.getDirection();           //탄성막이 향하는 방향을 저장해 둔다.
            }
        }
        else
        {
            glowingEffect.SetActive(false);
        }

        if (startDelta)//선택이 끝나면 파괴되기까지의 카운트 다운 시작
        {
            destroyDelta -= Time.deltaTime;
            if (destroyDelta < 0)
            {
                usefullOperation.FadeOut(2, GetComponent <SpriteRenderer>());                  //설치하고 15초가 지나면 파괴
            }
        }
    }
Exemplo n.º 2
0
    private void Update()
    {
        if (padDirection.getDirection().x <= 0)
        {
            key = 1;
        }
        if (padDirection.getDirection().x > 0)
        {
            key = -1;
        }

        if (!skillButton.getUsingSkill())
        {
            transform.localScale = new Vector3(key * 0.4f, 0.4f, 1);                              //필살기 사용중이 아니면 패드 위치에 따라 캐릭터가 향하는 방향이 바뀜
        }
        bottlePosition = transform.GetChild(playingChr).transform.position;
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        transform.position = playerImageController.getBottlePosition();

        if (padStrength.isTouch || padStrength.isThrowing || skillButton.getUsingSkill() || bottleSelectController.bottleController.isSuperPowerAvailabe)
        {
            transform.GetChild(0).gameObject.SetActive(false);
        }
        else if (padDirection.getIsTouch())
        {
            transform.GetChild(0).gameObject.SetActive(true);
            double angle = Mathf.Atan2(padDirection.getDirection().y, padDirection.getDirection().x) * (180.0 / Mathf.PI) + 185;
            if (padDirection.getDirection().magnitude == 0)
            {
                this.transform.rotation = Quaternion.Euler(0, 0, 0);                                             //드래그를 안 했을 시 회전하지 않는다.
            }
            else
            {
                this.transform.rotation = Quaternion.Euler(0, 0, (float)angle);  //조이스틱의 방향에 따라 방향을 변경
            }
        }
    }
Exemplo n.º 4
0
    public void PushSkillButton()
    {
        if (usingSkill) //필살기 사용 완료
        {
            GetComponent <Image>().sprite = skillButtonSprite[0];

            //panel_SuperPower.SetActive(true); //초능력 입력 패널 활성화

            if (playerImageController.getPlayingChr() == 0)                              //염동력자가 필살기를 사용 완료했을 때
            {
                if (bottleSelectController.bottleSkillOperation.getUsingSkillNum() != 0) //필살기를 적용한 물병이 존재하는 경우
                {
                    playerImageController.ChangePlayerImageWithDelay(2, 0);              //딜레이 주고 던지는 자세로 교체
                    bottleSelectController.SetActiveBottleWithDelay(2);                  //딜레이 주고 물통 활성화
                    controllButtonsUIManager.setShowButtonsWithDelay(2, 1);              //스킬 버튼과 membrame 추가/제거 버튼을 제외하고 모든 컨트롤 버튼 활성화
                    psychokinesis.SkillActivate();
                    skillUsed = true;
                }
                else //필살기를 적용한 물병이 없을 경우
                {
                    playerImageController.ChangePlayerImage(0); //던지는 자세로 교체
                    bottleSelectController.bottle.SetActive(true);    //물통 활성화
                    controllButtonsUIManager.setShowButtons(true, 1); //스킬 버튼과 membrame 추가/제거 버튼을 제외하고 모든 컨트롤 버튼 활성화
                }
            }
            else if (playerImageController.getPlayingChr() == 1)  //탄성막 생성자가 필살기를 사용 완료했을 때
            {
                playerImageController.ChangePlayerImage(0);       //던지는 자세로 교체
                bottleSelectController.bottle.SetActive(true);    //물통 활성화
                padDirection.setDirection(previousDirection);     //조이스틱 방향을 원래 방향으로 갱신
                controllButtonsUIManager.setShowButtons(true, 2); // 탄성막 추가 버튼을 숨기고 모든 컨트롤 버튼을 보여줌
                trajectory.SetActive(true);                       //포물선 활성화
                MembraneUsingSkillEffect.selectedMembrane = null; //탄성막 선택 초기화
                for (int i = 0; i < membranes.transform.childCount; i++)
                {
                    membranes.transform.GetChild(i).GetComponent <MembraneUsingSkillEffect>().setStartDelta(true); //탄성막 파괴 카운트다운 시작
                    membranes.transform.GetChild(i).GetComponent <MembraneUsingSkillEffect>().Activate();          //콜라이더 활성화
                }

                if (membranes.transform.childCount > 0)
                {
                    skillUsed = true;
                }
            }
            else //빙결자가 필살기를 사용 완료했을 때
            {
                if (bottleSelectController.bottleSkillOperation.getUsingSkillNum() != 0) //필살기를 젹용하는 물병이 존재하는 경우
                {
                    playerImageController.ChangePlayerImageWithDelay(1, 0); //딜레이 주고 던지는 자세로 교체
                    bottleSelectController.SetActiveBottleWithDelay(1);     //물통 활성화
                    controllButtonsUIManager.setShowButtonsWithDelay(1, 1); //스킬 버튼과 membrame 추가/제거 버튼을 제외하고 모든 컨트롤 버튼 활성화
                    freezer.SkillActivate();
                    skillUsed = true;
                }
                else
                {
                    playerImageController.ChangePlayerImage(0);       //던지는 자세로 교체
                    bottleSelectController.bottle.SetActive(true);    //물통 활성화
                    controllButtonsUIManager.setShowButtons(true, 1); //스킬 버튼과 membrame 추가/제거 버튼을 제외하고 모든 컨트롤 버튼 활성화
                }
            }

            if (skillUsed)                                    //유의미하게 스킬을 사용했을 때
            {
                tensionGaugeManager.DecreaseTensionGauge(50); //텐션게이지 감소
                skillUsed = false;
            }
            bottleSelectController.bottleSkillOperation.setUsingSkillNum(0);
            usingSkill = false;
        }
        else // 필살기 사용 시작
        {
            GetComponent <Image>().sprite = skillButtonSprite[1]; //버튼 이미지 교체

            playerImageController.ChangePlayerImage(2);           //플레이어 초능력 사용 자세로 교체

            bottleSelectController.bottle.SetActive(false);       //물통 비활성화

            if (playerImageController.getPlayingChr() == 1)       //탄성막 생성자가 필살기를 사용했을 때
            {
                previousDirection = padDirection.getDirection();  //스킬버튼을 누르기 전의 방향 저장
                controllButtonsUIManager.setHideButtons(true, 2); //탄성막 추가 버튼 보이고 조이스틱을 제외한 컨트롤 버튼 숨김
                trajectory.SetActive(false);                      //포물선 비활성화
            }
            else //염동력자, 빙결자가 필살기를 사용했을 때
            {
                controllButtonsUIManager.setHideButtons(true, 1); //스킬 버튼을 제외하고 모든 컨트롤 버튼 숨김
            }

            usingSkill = true;
        }
    }
Exemplo n.º 5
0
    void Update()
    {
        if (padStrength.isTouch)
        {
            padStrengthTouched = true;
        }
        if (padDirection.getIsTouch())
        {
            padDirectionTouched = true;                            //오타 수정
        }
        if ((padStrength.isTouch || padDirectionTouched) && (!isSuperPowerAvailabe) && gameObject.CompareTag("isActBottle"))
        // 방향 패드만 눌렸을 때 기본 힘으로 포물선 그리기, 후에 힘버튼으로 포물선 조정
        {
            trajectoryLine.Draw(padStrengthTouched, padDirection.getDirection(), padStrength.totalStrength);
            transform.position = playerImageController.getBottlePosition(); // 물병 위치 갱신
        }

        if (gameObject.CompareTag("unActBottle"))
        {
            Vector2 distance = gameObject.transform.position - playerImageController.getBottlePosition();
            zRotation = gameObject.transform.eulerAngles.z;
            delta    += Time.deltaTime;

            if (distance.magnitude < 2)
            {
                gameObject.SetActive(false); //던져진 물병이 물병 생성 위치와 너무 가까이 있으면 비활성화
            }
            if (standingBySkill)             //필살기 발동에 의해 물병이 세워짐
            {
                standingDelay -= Time.deltaTime;
                rb.WakeUp();
                rb.centerOfMass = new Vector3(0, -0.6f, 0);

                if (standingDelay < 0)
                {
                    standingDelay   = 2;
                    standingBySkill = false;
                    rb.centerOfMass = Vector3.zero;
                    if (!isDestroying)
                    {
                        usefullOperation.FadeOut(1, this.transform.GetChild(0).GetComponent <SpriteRenderer>());              //파괴 도중에 실행되면 오류 발생
                    }
                }
            }

            if (standBottle) //물병이 세워지는 경우
            {
                if (delta < 0.6f && transform.eulerAngles.z < 340 && transform.eulerAngles.z > 20)
                {
                    if (zRotation > 340)
                    {
                        transform.Rotate(new Vector3(0, 0, 180 * Time.smoothDeltaTime), Space.World);                  //물병의 z축 값을 360으로 수렴
                    }
                    else
                    {
                        transform.Rotate(new Vector3(0, 0, -180 * Time.smoothDeltaTime), Space.World);  //물병의 z축 값을 0으로 수렴
                    }
                }
                else if (delta < 0.9f)
                {
                    if (transform.eulerAngles != Vector3.zero)
                    {
                        transform.rotation = Quaternion.Euler(Vector3.zero);
                        rb.constraints     = RigidbodyConstraints2D.FreezeRotation;
                    }
                    rb.AddForce(new Vector2(0, -1000 * Time.smoothDeltaTime)); // 물병이 튀어오르지 않도록 아래로 힘 작용
                }
                else
                {
                    standBottle    = false;
                    rb.constraints = RigidbodyConstraints2D.None; //z축 회전고정 해제
                }
            }

            // 세워져 있는지의 여부 수정 및 텐션게이지 상승
            if (((delta > 1.49f) && !((zRotation > 340) || (zRotation < 20))) || onFloor)
            {
                isStanding     = false;
                tensionGaugeUp = false;
                if (delta < 1.5f)
                {
                    combo = 0;
                    tensionGaugeManager.comboText = "";
                }
            }
            else if ((delta > 1f) && (Mathf.Abs(rb.angularVelocity) < 0.1f) && ((zRotation > 340) || (zRotation < 20)))
            {
                isStanding = true;
                if (tensionGaugeUp)
                {
                    combo++;
                    tensionGaugeManager.IncreaseTensionGauge(2, combo); //10% * 콤보수 만큼 상승
                    tensionGaugeUp = false;
                }
            }
        }

        if (onFloor) //NEW: 땅바닥에 닿았을 때 물병 파괴
        {
            destroyDelay -= Time.deltaTime;
            if (destroyDelay < 0)
            {
                usefullOperation.FadeOut(1, this.transform.GetChild(0).GetComponent <SpriteRenderer>());
                usefullOperation.FadeOut(2, transparent);
            }
            isDestroying = true;
        }


        if (gameObject.transform.position.y < -10 && !isDestroying) // 물병이 화면 밖으로 날아갔을 때
        {
            if (gameObject.CompareTag("unActBottle"))
            {
                Destroy(gameObject);                                       // 어딘가 부딪히고 화면 밖으로 튕겨나갔을 때
            }
            else
            {
                if (Time.timeScale != 1) //염력 사용하다가 화면 밖으로 날아간 경우
                {
                    Time.timeScale      = 1;
                    Time.fixedDeltaTime = 0.02f * Time.timeScale;
                    screenEffectController.shadowEffect.enabled = false;
                    screenEffectController.screenEffectNum      = 1;
                }
                gameObject.tag = "unActBottle";                        //태그가 사라짐
                bottleSelectController.bottleSelected = false;
                bottleGenerator.GenerateBottleWithDelay(0.75f);        //물병 생성
                bottleSelectController.ReselectBottleWithDelay(0.75f); //물병 재선택
                Destroy(gameObject);                                   //해당 물병 파괴
            }
        }
    }