public void OnDrop(PointerEventData data) { CommandCount.Add(); CardMovement dragObj = data.pointerDrag.GetComponent <CardMovement>(); if (dragObj != null) { dragObj.parentTransform = this.transform; Debug.Log(gameObject.name + "に" + data.pointerDrag.name + "をドロップ(field)"); if (dragObj.CompareTag("right")) { C.GetComponent <UnityChanAttempt>().RightRun(); // C.transform.Translate(1,0,0); } if (dragObj.CompareTag("left")) { if (C.transform.position.x <= -8) { Instantiate(childObject, new Vector3(400, 250, 0), Quaternion.identity, parent); } else { C.GetComponent <UnityChanAttempt>().LeftRun(); // C.transform.Translate(-1,0,0); } } if (dragObj.CompareTag("up")) { C.GetComponent <UnityChanAttempt>().Jump(); // C.transform.Translate(0,1,0); } if (dragObj.CompareTag("down")) { C.transform.Translate(0, -1, 0); } if (dragObj.CompareTag("rightRun")) { StartCoroutine(C.GetComponent <UnityChanAttempt>().Runx()); } if (dragObj.CompareTag("leftRun")) { StartCoroutine(C.GetComponent <UnityChanAttempt>().Runy()); } if (dragObj.CompareTag("if")) { C.GetComponent <UnityChanAttempt>().ActivateOnCollisionStay(); } } }
public void GetAllChildObjects() { GameObject[] ChildObjects = new GameObject[PlayerField.transform.childCount]; for (int i = 0; i < PlayerField.transform.childCount; i++) { ChildObjects[i] = PlayerField.transform.GetChild(i).gameObject; } Array.Sort(ChildObjects, (a, b) => (int)b.transform.position.y - (int)a.transform.position.y); for (int i = 0; i < ChildObjects.Length; i++) { CommandCount.Add(); commandsQueue.Enqueue(ChildObjects[i]); } GameObject last = new GameObject("lastCommand"); last.tag = "lastCommand"; commandsQueue.Enqueue(last); }
IEnumerator Run() { GetAllChildObjects(); for (; commandsQueue.Count != 0;) { GameObject commandObj = commandsQueue.Dequeue(); string command = commandObj.tag; CommandText.text = command; switch (command) { case "right": C.GetComponent <UnityChanAttempt>().RightRun(); break; case "left": C.GetComponent <UnityChanAttempt>().LeftRun(); break; case "up": C.GetComponent <UnityChanAttempt>().Jump(); break; case "down": C.transform.Translate(0, -2, 0); break; case "rightRun": { float x = C.GetComponent <UnityChanAttempt>().GetRightInput(); for (int i = 0; i < Math.Floor(x); i++) { C.GetComponent <UnityChanAttempt>().RightRun(); yield return(new WaitForSeconds(1.0f)); } } break; case "leftRun": { float x = C.GetComponent <UnityChanAttempt>().GetLeftInput(); for (int i = 0; i < Math.Floor(x); i++) { C.GetComponent <UnityChanAttempt>().LeftRun(); yield return(new WaitForSeconds(1.0f)); } } break; case "if": C.GetComponent <UnityChanAttempt>().ActivateOnCollisionStay(); yield return(null); C.GetComponent <UnityChanAttempt>().DeactivateOnCollisionStay(); break; case "while": GameObject whileCommand = commandObj.transform.GetChild(1).gameObject; GameObject[] ChildObjects = new GameObject[whileCommand.transform.childCount]; for (int i = 0; i < whileCommand.transform.childCount; i++) { ChildObjects[i] = whileCommand.transform.GetChild(i).gameObject; } string[] commandsOnWhile = new string[ChildObjects.Length]; Array.Sort(ChildObjects, (a, b) => (int)b.transform.position.y - (int)a.transform.position.y); for (int i = 0; i < ChildObjects.Length; i++) { commandsOnWhile[i] = ChildObjects[i].tag; CommandCount.Add(); } while (true) { oldPosition = C.transform.position; foreach (string commandOnWhile in commandsOnWhile) { CommandText.text = commandOnWhile + "(whileの中)"; switch (commandOnWhile) { case "right": C.GetComponent <UnityChanAttempt>().RightRun(); break; case "left": C.GetComponent <UnityChanAttempt>().LeftRun(); break; case "up": C.GetComponent <UnityChanAttempt>().Jump(); break; case "down": C.transform.Translate(0, -2, 0); break; case "rightRun": C.GetComponent <UnityChanAttempt>().Runx(); break; case "leftRun": C.GetComponent <UnityChanAttempt>().Runy(); break; case "if": C.GetComponent <UnityChanAttempt>().ActivateOnCollisionStayOnWhile(); break; default: break; } yield return(new WaitForSeconds(1.0f)); } Vector3 currentPosition = C.transform.position; if (oldPosition == currentPosition) { C.GetComponent <UnityChanAttempt>().DeactivateOnCollisionStayOnWhile(); break; } currentPosition = oldPosition; } break; default: break; } yield return(new WaitForSeconds(2.0f)); } gameObject.GetComponent <Button>().interactable = true; C.transform.position = initPosition; }