Exemplo n.º 1
0
 // フリック入力関連
 #region
 private void Flick()
 {
     // 左マウス押下時にブロックを取得
     if (Input.GetMouseButtonDown(0) && flickState == FlickState.FREE)
     {
         flickState = FlickState.FLICKING;
         Ray          ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit2D hit = Physics2D.Raycast(ray.origin, ray.direction, 10.0f);
         selectedBlock = null; // 選択中のブロックを一旦nullにしておく
         if (hit.collider != null)
         {
             if (hit.collider.tag.Equals("Block"))
             {
                 selectedBlock = hit.collider.gameObject.GetComponent <Block>();
                 print("selected Block: " + selectedBlock.BlockPosition.X + ":" + selectedBlock.BlockPosition.Y + " BlockStatus : " + selectedBlock.BlockStatus);
                 beginPoint = Input.mousePosition;
             }
         }
     }
     // 左マウスボタン離した時にフリック方向を取得
     if (Input.GetMouseButtonUp(0) && flickState == FlickState.FLICKING)
     {
         endPoint = Input.mousePosition;
         // 選択中のブロックが存在し、BlockStatusがNORMALなら
         if (selectedBlock != null && selectedBlock.BlockStatus == BlockStatus.NORMAL)
         {
             // 取得した距離からブロックを入れ替え
             this.mainGameSystem.OnFlicked(GetDirection(beginPoint, endPoint), ref selectedBlock, ref destBlock);
         }
         // 処理が終わったら選択中のブロックと対象のブロックを初期化
         selectedBlock = null;
         destBlock     = null;
         flickState    = FlickState.FREE;
     }
 }
Exemplo n.º 2
0
    /// <summary>
    /// 次にどちらにフリックするのかを決め、フリックカウントを増やす
    /// </summary>
    void Flick()
    {
        if (bomCount.NowBomCount() == 0)
        {
            return;
        }

        switch (flickState)
        {
        case FlickState.Right:
            if (nextFlickState == FlickState.Right || nextFlickState == 0)
            {
                nextFlickState = FlickState.Left;
                flickCount++;
            }
            break;

        case FlickState.Left:
            if (nextFlickState == FlickState.Left || nextFlickState == 0)
            {
                nextFlickState = FlickState.Right;
                flickCount++;
            }
            break;
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 左右フリックの判定
    /// </summary>
    void FlickSide()
    {
        if (startFlickX == touchNowPosX)
        {
            return;
        }

        if (memoryPos > touchNowPosX)
        {
            flickState = FlickState.Left;
        }
        else if (memoryPos < touchNowPosX)
        {
            flickState = FlickState.Right;
        }

        //1フレーム前のポジションを記憶させる
        memoryPos = touchNowPosX;
    }
Exemplo n.º 4
0
    /// <summary>
    /// 初期化
    /// </summary>
    void FlickInitialize()
    {
        memoryPos   = touchNowPosX;
        startFlickX = Input.mousePosition.x;

        flickCount   = 0;
        flickIndex   = 0;
        displayCount = 1;

        flickState     = FlickState.Filst;
        nextFlickState = FlickState.Filst;

        pumpRender.sprite = pumpkinsSp[0];

        foreach (Transform obj in pumpkinParent.transform)
        {
            obj.gameObject.SetActive(false);
        }
    }