// Update is called once per frame void Update() { if (canMove == true) { if (script.GetNowFront() == (int)manager.Wall.Left || script.GetNowFront() == (int)manager.Wall.Right) { gameObject.transform.Translate(Way, Space.World); } else { gameObject.transform.Translate(Way, Space.World); } } // TManager.setStartMoveWay(Way); }
//========================= // 更新処理 //========================= void Update() { if (TouchStateManagerScript.GetTouch() == false && awa_Flag == true) { awa_Flag = false; } // タッチされている時 if (managerScript.isRotate == false && TouchStateManagerScript.GetTouch()) { Kuttuki_Flag = false; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (!(Physics.Raycast(ray, out hit, Mathf.Infinity, mask))) { if (!awa_Flag) { audioSource.PlayOneShot(SE_awa); awa_Flag = true; } } if (startObj == null) { // Rayが特定レイヤの物体(バイキン)に衝突している場合 if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask)) { // 大バイキンにRayが衝突している時 if (hit.collider.gameObject.CompareTag("BigSlime") && isFusion == false) { Debug.Log("爆発"); touchFlg = true; Debug.Log("有効なタッチである"); // 処理内容はslimeControl.csのBigSlimeClickAct()の中 hit.collider.gameObject.GetComponent <slimeControl>().SlimeDestroy(new Vector3(0, 0, 0)); managerScript.CheckBubble(); } // 小、中バイキンにRayがぶつかった時 else if (hit.collider.gameObject.CompareTag("MiddleSlimeTate") || hit.collider.gameObject.CompareTag("MiddleSlimeYoko") || hit.collider.gameObject.CompareTag("SmallSlime")) { isFusion = true; currentName = hit.collider.gameObject.tag; // バイキンオブジェクトを格納 startObj = hit.collider.transform.parent.gameObject; endObj = hit.collider.transform.parent.gameObject; // 削除対象オブジェクトリストの初期化 removableBaikinList = new List <GameObject>(); // 削除対象のオブジェクトを格納 PushToList(hit.collider.gameObject); Debug.Log("削除対象追加"); } } else { } } //タッチ終了時 else if (TouchStateManagerScript.GetTouchPhase() == TouchPhase.Ended) { int remove_cnt = removableBaikinList.Count; if (remove_cnt == 2) { if (startObj.CompareTag("MiddleSlime")) { //CreateBigBubble(); } //小バイキンが消された場合 else if (startObj.CompareTag("SmallSlime")) { //CreateMiddleBubble(); } //GameObject.Destroy(startObj); //GameObject.Destroy(endObj); //startObj.GetComponent<slimeControl>().BubbleMove(Vector3.Normalize(startObj.transform.position - endObj.transform.position)); } // 消す対象外の時 else { for (int i = 0; i < remove_cnt; i++) { removableBaikinList[i] = null; } } // リスト内のバイキンを消す currentName = null; startObj = null; endObj = null; } // タッチ中 else if (TouchStateManagerScript.GetTouchPhase() == TouchPhase.Moved && startObj != null) { // Rayが特定レイヤの物体(バイキン)に衝突している場合 if (Physics.Raycast(ray, out hit, Mathf.Infinity, mask)) { if (hit.collider != null) { GameObject hitObj = hit.collider.transform.parent.gameObject; // 同じタグのブロックをクリック&endObjとは別オブジェクトである時 if (hitObj.tag == currentName && endObj != hitObj) { Debug.Log("同タグの別オブジェクトが選択された"); // 2つのオブジェクトの距離を取得 float distance = Vector2.Distance(hitObj.transform.position, endObj.transform.position); isFusion = false; if (distance <= MaxDistance) { Debug.Log("z値を取得し比較"); // zが同じであれば if (((managerScript.GetNowFront() == (int)manager.Wall.Front) || (managerScript.GetNowFront() == (int)manager.Wall.Back)) && Mathf.Floor(Mathf.Abs(startObj.transform.parent.position.z)) / (MaxDistance / 2) == Mathf.Floor(Mathf.Abs(hitObj.transform.parent.position.z)) / (MaxDistance / 2) ) { DecideBubble(hitObj); } else if (((managerScript.GetNowFront() == (int)manager.Wall.Right) || (managerScript.GetNowFront() == (int)manager.Wall.Left)) && Mathf.Floor(Mathf.Abs(startObj.transform.parent.position.x)) / (MaxDistance / 2) == Mathf.Floor(Mathf.Abs(hitObj.transform.parent.position.x)) / (MaxDistance / 2)) { DecideBubble(hitObj); } } } } } } } if (touchFlg == true) { //ここに中小のバイキン削除、バイキン生成を移す touchNum++; managerScript.CheckBubble(); touchFlg = false; } }