// フリック入力関連 #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; } }
/// <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; } }
/// <summary> /// 左右フリックの判定 /// </summary> void FlickSide() { if (startFlickX == touchNowPosX) { return; } if (memoryPos > touchNowPosX) { flickState = FlickState.Left; } else if (memoryPos < touchNowPosX) { flickState = FlickState.Right; } //1フレーム前のポジションを記憶させる memoryPos = touchNowPosX; }
/// <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); } }