Exemple #1
0
    //--------------------------------------------------------------------------
    //          ぷにぷにコントローラーの終了
    //--------------------------------------------------------------------------
    public void EndPunipuni()
    {
        ////   タップされていた時間が一定以下だった時の処理
        ////////////////////////////////////////////////////////////////////
        if (TouchState == TOUCH_STATE.NONE && nStateCheckCounter < TapDiscriminationFrame && Input.touchCount > 0)
        {
            ////    タップ状況を「TAP」に変更
            ////////////////////////////////////////////////////////////////
            TouchState = TOUCH_STATE.TAP;

            ////    タップエフェクト発生
            ////////////////////////////////////////////////////////////////
            tapeffect.SetEffectType(EFFECT_TYPE.TAP);                         // エフェクトタイプセット
            tapeffect.EffectFlug = true;                                      // エフェクト更新フラグON
        }

        ////   タップされていた時間が一定以上だった時の処理
        ////////////////////////////////////////////////////////////////////
        if (Input.touchCount == 0)
        {
            ////    ベジェ曲線とぷニコンメッシュのリセット
            ////////////////////////////////////////////////////////////////////
            ResetPuniMeshAndBezier();

            ////    エフェクトOFF
            ////////////////////////////////////////////////////////////////
            if (tapeffect.Effecttype == EFFECT_TYPE.HOLD)
            {
                SpriteRenderHE2D.enabled = false;       // ホールドエフェクトOFF
                tapeffect.EffectStatusReset();          // ステータスリセット
            }
        }
    }
Exemple #2
0
    void TouchZoom()
    {
        if (TOUCH_STATE.NONE == DragState)
        {
            StartDist = Vector2.Distance(Input.touches[0].position, Input.touches[1].position);
            DragState = TOUCH_STATE.DRAG;
            FirstZoom = true;
        }
        else
        {
            if (FirstZoom)
            {
                FirstZoom = false;
                return;
            }

            float dist = Vector2.Distance(Input.touches[0].position, Input.touches[1].position);

            float offset = dist - StartDist;
            if (Mathf.Abs(offset) > 100)
            {
                offset *= 0.01f;
            }
            StartDist = dist;
            ZoomValue = offset * 0.1f;
        }
    }
Exemple #3
0
    bool DragCamera(POINTER_INFO ptr)
    {
        if (Input.touchCount > 1)
        {
            return(false);
        }

        Vector3 worldPos = Vector3.zero;

        if (!CalcluateGroundPos(ptr.ray, ref worldPos, "Water"))
        {
            return(false);
        }

        switch (ptr.evt)
        {
        case POINTER_INFO.INPUT_EVENT.PRESS:
            ClickWorldPos = worldPos;
            break;

        case POINTER_INFO.INPUT_EVENT.DRAG:
            if (DragState == TOUCH_STATE.DRAG)
            {
                ClickWorldPos = worldPos;
                DragState     = TOUCH_STATE.NONE;

                break;
            }
            worldPos.y   = ClickWorldPos.y;
            DragWorldPos = worldPos;

            if (!ReversAction)
            {
                DragMovement = ClickWorldPos - DragWorldPos;
            }
            else
            {
                ClickWorldPos += (DragWorldPos - ClickWorldPos) * 2f;
            }

            break;
        }
        return(true);
    }
Exemple #4
0
    //--------------------------------------------------------------------------
    //          タップ状況の更新
    //--------------------------------------------------------------------------
    private void UpdateTapState()
    {
        //----------------------------------------------------------------------
        //          カウンタが一定数を超えた場合の処理
        //----------------------------------------------------------------------
        if (TouchState == TOUCH_STATE.NONE && nStateCheckCounter >= TapDiscriminationFrame)
        {
            ////    タップ状況を「ホールド」に変更
            ////////////////////////////////////////////////////////////////////
            TouchState = TOUCH_STATE.HOLD;

            ////    コントローラ表示フラグをTRUE、エフェクト生成
            ////////////////////////////////////////////////////////////////////
            VisiblePunipuniController = true;
            tapeffect.EffectFlug      = true;                             // エフェクト更新フラグON
            tapeffect.SetEffectType(EFFECT_TYPE.HOLD);                    // エフェクトタイプセット
            SpriteRenderHE2D.enabled = true;
        }

        //----------------------------------------------------------------------
        //          タップ状態が(HOLD)の時の位置情報送信処理
        //----------------------------------------------------------------------
        if (tapeffect.EffectFlug == true && tapeffect.Effecttype == EFFECT_TYPE.HOLD && VisiblePunipuniController == true)
        {
            tapeffect.EffectPos = TargetCamera.ScreenToWorldPoint(new Vector3(Scr_ControllerManager.tTouchInfo.position.x,
                                                                              Scr_ControllerManager.tTouchInfo.position.y,
                                                                              1.0f));
        }

        //----------------------------------------------------------------------
        //          カウントフラグがTRUEの場合の処理
        //----------------------------------------------------------------------
        if (TouchState == TOUCH_STATE.NONE && bStateCountFlug)
        {
            ////    カウンタを加算
            ////////////////////////////////////////////////////////////////////
            nStateCheckCounter++;
        }
    }
Exemple #5
0
    void enter(TOUCH_STATE state)
    {
        VoiceMgr vm = VoiceMgr.GetInstance();

        Debug.Log("enter " + state);

        switch (state)
        {
        case TOUCH_STATE.START:
            vm.prepare("record.amr");
            lastTouchTime = Time.time;

            voice.SetActive(true);
            mic.SetActive(true);
            volume.SetActive(true);
            cancel.SetActive(false);
            warning.SetActive(false);

            time.transform.localScale = new Vector2(0, 1);
            notice.text = "滑动手指,取消发送";
            break;

        case TOUCH_STATE.MOVE_OUT:
            if (lastTouchTime > 0)
            {
                mic.SetActive(false);
                volume.SetActive(false);
                cancel.SetActive(true);
                warning.SetActive(false);

                notice.text = "松开手指,取消发送";
            }

            break;

        case TOUCH_STATE.MOVE_IN:
            if (lastTouchTime > 0)
            {
                mic.SetActive(true);
                volume.SetActive(true);
                cancel.SetActive(false);
                warning.SetActive(false);

                notice.text = "滑动手指,取消发送";
            }

            break;

        case TOUCH_STATE.CANCEL:
            if (lastTouchTime > 0)
            {
                vm.cancel();
                lastTouchTime = 0;
                voice.SetActive(false);
            }

            break;

        case TOUCH_STATE.END:
            if (lastTouchTime > 0)
            {
                if (Time.time - lastTouchTime < 1.0f)
                {
                    vm.cancel();

                    voice.SetActive(true);
                    mic.SetActive(false);
                    volume.SetActive(false);
                    cancel.SetActive(false);
                    warning.SetActive(true);
                    time.transform.localScale = new Vector2(0, 1);
                    notice.text = "录制时间太短";

                    PUtils.setTimeout(() => {
                        voice.SetActive(false);
                    }, 1.0f);
                }
                else
                {
                    onVoiceOK();
                }

                lastTouchTime = 0;
            }

            break;

        default:
            break;
        }
    }
Exemple #6
0
    //--------------------------------------------------------------------------
    //          ベジェ曲線とぷニコンメッシュのリセット
    //--------------------------------------------------------------------------
    void ResetPuniMeshAndBezier()
    {
        ////    PC or スマホ タッチ判定分岐処理
        ////////////////////////////////////////////////////////////////////
        Vector3 screenPos = Vector3.zero;                        // タップ座標

        screenPos = Input.mousePosition;                         // 座標取得

        ////    初期位置(始点)&現在位置(終点)設定
        ////////////////////////////////////////////////////////////////////
        this.BeginMousePosition = TargetCamera.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, 1.0f));
        transform.position      = TargetCamera.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, 1.0f));

        ////    ベジェ曲線パラメータ設定
        ////////////////////////////////////////////////////////////////////
        var x = 0;
        var y = 0;

        BezierC.P1 = new Vector2(x, y);     // 中心
        BezierC.P2 = new Vector2(x, y);     // 制御点1
        BezierC.P3 = new Vector2(x, y);     // 制御点2
        BezierC.P4 = new Vector2(x, y);     // 終点
        BezierL.P1 = new Vector2(x, y);     // 中心
        BezierL.P2 = new Vector2(x, y);     // 制御点1
        BezierL.P3 = new Vector2(x, y);     // 制御点2
        BezierL.P4 = new Vector2(x, y);     // 終点
        BezierR.P1 = new Vector2(x, y);     // 中心
        BezierR.P2 = new Vector2(x, y);     // 制御点1
        BezierR.P3 = new Vector2(x, y);     // 制御点2
        BezierR.P4 = new Vector2(x, y);     // 終点

        ////    ベジェ曲線の情報を更新
        ////////////////////////////////////////////////////////////////////////
        UpdateBezierParameter(-x, -y);

        ////    メッシュ情報の更新
        ////////////////////////////////////////////////////////////////////////
        PuniMesh.Vertexes = TransformFromBezier(new Vector3());

        ////   メッシュ情報確定
        ////////////////////////////////////////////////////////////////////////
        var centerPos = BezierC.GetPosition(0.8f);

        PuniMesh.CenterPoint = centerPos;

        ////    タップ状況を"NONE"にする。
        ////////////////////////////////////////////////////////////////////////
        TouchState = TOUCH_STATE.NONE;

        ////    カウンタリセット
        ////////////////////////////////////////////////////////////////
        nStateCheckCounter = 0;

        ////    タップ状況判別カウントフラグをfalseに
        ////////////////////////////////////////////////////////////////////
        bStateCountFlug = false;

        ////    コントローラ表示フラグfalse
        ////////////////////////////////////////////////////////////////////
        VisiblePunipuniController = false;
    }