// Use this for initialization void Start() { anime = GetComponent <Animator>(); audioSource = GetComponent <AudioSource>(); pData = new PosiData(); pData.x = (int)transform.position.x; pData.y = (int)transform.position.y; StageManager.Instance.setCube(pData.x, pData.y); }
public void Move(int x, int y, PosiData dir) { x += offset.x; y += offset.y; var dx = x + dir.x; var dy = y + dir.y; stageData[x, y].onCube = false; stageData[dx, dy].onCube = true; }
bool Move(PosiData dir) { var sm = StageManager.Instance; var result = sm.MoveCheck(pData.x, pData.y, dir); if (result) { sm.Move(pData.x, pData.y, dir); } return(result); }
public bool MoveCheck(int x, int y, PosiData dir) { var dx = x + dir.x; var dy = y + dir.y; if (checkObj(dx, dy)) { return(false); } if (stageData[dx + offset.x, dy + offset.y].onCube) { if (!MoveCheck(dx, dy, dir)) { return(false); } return(true); } return(true); }
void Awake() { Instance = this; stageData = new FieldData[width, height]; offset = new PosiData { x = width / 2, y = height / 2 }; for (var x = 0; x < width; x++) { for (var y = 0; y < height; y++) { stageData[x, y] = new FieldData { type = FieldData.ObjType.None, onCube = false }; } } for (var x = -1; x < width + 1; x++) { for (var y = -1; y < height + 1; y++) { var px = x - offset.x; var py = y - offset.y; GameObject obj; if ((x >= 0 && x < width) && (y >= 0 && y < height)) { obj = Instantiate(floor, new Vector3(px, 0, py), Quaternion.Euler(90, 0, 0)) as GameObject; } else { obj = Instantiate(wall, new Vector3(px, 0, py), Quaternion.Euler(90, 0, 0)) as GameObject; } obj.transform.SetParent(transform); } } }
// Update is called once per frame void Update() { var h = Input.GetAxisRaw("Horizontal"); var v = Input.GetAxisRaw("Vertical"); var dir = new PosiData { x = (int)h, y = (int)v }; if (!isMove && GameManager.Instance.State == GameState.play) { if (h >= 1) { if (Move(dir)) { anime.SetTrigger("Right"); pData.x++; } else { anime.SetTrigger("RightCancel"); } isMove = true; } else if (h <= -1) { if (Move(dir)) { anime.SetTrigger("Left"); pData.x--; } else { anime.SetTrigger("LeftCancel"); } isMove = true; } else if (v >= 1) { if (Move(dir)) { anime.SetTrigger("Front"); pData.y++; } else { anime.SetTrigger("FrontCancel"); } isMove = true; } else if (v <= -1) { if (Move(dir)) { anime.SetTrigger("Back"); pData.y--; } else { anime.SetTrigger("BackCancel"); } isMove = true; } } }