Beispiel #1
0
 // 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);
 }
Beispiel #2
0
    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;
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
            }
        }
    }
Beispiel #6
0
    // 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;
            }
        }
    }