예제 #1
0
    public void OnGrid(Vector3 newPos)
    {
        // 捡起宝石
        m_map.PickUpItem(newPos);
        Vector3 direction;

        if (GlobalParam.GetInstance().IsAdvertiseMode())
        {
            direction = GetAdvModeMoveDirection();
        }
        else
        {
            direction = GetMoveDirection();
        }

        // 没有按键输入(不转换方向)
        if (direction == Vector3.zero)
        {
            return;
        }

        // 先按键输入的方向移动(允许移动的情况下)
        if (!m_grid_move.CheckWall(direction))
        {
            m_grid_move.SetDirection(direction);
        }
    }
예제 #2
0
    public void OnGrid(Vector3 newPos)
    {
        // 보석을 줍는다.
        m_map.PickUpItem(newPos);
        Vector3 direction;

        if (GlobalParam.GetInstance().IsAdvertiseMode())
        {
            direction = GetAdvModeMoveDirection();
        }
        else
        {
            direction = GetMoveDirection();
        }

        // 키 입력 없음(방향 전환 하지 않는다).
        if (direction == Vector3.zero)
        {
            return;
        }

        // 키 입력 방향으로 이동(이동할 수 있는 경우).
        if (!m_grid_move.CheckWall(direction))
        {
            m_grid_move.SetDirection(direction);
        }
    }
예제 #3
0
    public void OnGrid(Vector3 newPos)
    {
        // 宝石を拾う.
        m_map.PickUpItem(newPos);
        Vector3 direction;

        if (GlobalParam.GetInstance().IsAdvertiseMode())
        {
            direction = GetAdvModeMoveDirection();
        }
        else
        {
            direction = GetMoveDirection();
        }

        // キー入力なし(方向転換しない).
        if (direction == Vector3.zero)
        {
            return;
        }

        // キー入力の方向へ移動(移動できる場合).
        if (!m_grid_move.CheckWall(direction))
        {
            m_grid_move.SetDirection(direction);
        }
    }
예제 #4
0
    private void Tracer(Vector3 newPos)
    {
        Vector3 newDirection1st, newDirection2nd;

        // 자신의 위치에서 플레이어의 위치로 향하는 벡터.
        Vector3 diff = m_player.position - newPos;

        // X, Z의 절대값이 큰 쪽을 선택한다.
        if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z))
        {
            newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }
        else
        {
            newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }

        // 두 후보 중 이동 가능한 방향을 선택한다.
        Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd);

        if (newDir == Vector3.zero)
        {
            m_grid_move.SetDirection(-m_grid_move.GetDirection());
        }
        else
        {
            m_grid_move.SetDirection(newDir);
        }
    }
예제 #5
0
    private void Tracer(Vector3 newPos)
    {
        Vector3 newDirection1st, newDirection2nd;

        // 从自身位置指向玩家位置的向量
        Vector3 diff = m_player.position - newPos;

        // 选择X,Z中绝对值更大的一个
        if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z))
        {
            newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }
        else
        {
            newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }

        // 从两个候选值中选择可能移动的方向
        Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd);

        if (newDir == Vector3.zero)
        {
            m_grid_move.SetDirection(-m_grid_move.GetDirection());
        }
        else
        {
            m_grid_move.SetDirection(newDir);
        }
    }
예제 #6
0
    private void Tracer(Vector3 newPos)
    {
        Vector3 newDirection1st, newDirection2nd;

        // 自分の位置からプレイヤーの位置に向かうベクトル.
        Vector3 diff = m_player.position - newPos;

        // X、Zの絶対値が大きい方を選ぶ.
        if (Mathf.Abs(diff.x) > Mathf.Abs(diff.z))
        {
            newDirection1st = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection2nd = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }
        else
        {
            newDirection2nd = new Vector3(1, 0, 0) * Mathf.Sign(diff.x);
            newDirection1st = new Vector3(0, 0, 1) * Mathf.Sign(diff.z);
        }

        // 二つの候補から、移動可能な方向を選ぶ.
        Vector3 newDir = DirectionChoice(newDirection1st, newDirection2nd);

        if (newDir == Vector3.zero)
        {
            m_grid_move.SetDirection(-m_grid_move.GetDirection());
        }
        else
        {
            m_grid_move.SetDirection(newDir);
        }
    }
    public void OnGrid(Vector3[] positionPage)
    {
        Vector3 pos = positionPage[0];
        Vector3 near_grid = positionPage[1];

        Vector3 direction = new Vector3();
        direction = GetMoveDirection();
        if (direction == Vector3.zero)
        {
            return;
        }

        m_grid_move.SetDirection (direction);
        SaveTheTurnPoint(near_grid, direction);
    }