コード例 #1
0
    void OnDrawGizmos()
    {
        if (showGrid)
        {
            Gizmos.color = new Color(1f, 1f, 1f, 0.4f);

            Vector3 p = Vector3.zero;

            for (int i = 0; i <= spanX; i++)
            {
                p.x = i * size;
                p.z = 0;
                Vector3 startPos = IsoUtil.IsoToScreen(p.x, p.y, p.z);
                p.z = spanZ * size;
                Vector3 endPos = IsoUtil.IsoToScreen(p.x, p.y, p.z);
                Gizmos.DrawLine(transform.TransformPoint(startPos), transform.TransformPoint(endPos));
            }

            for (int i = 0; i <= spanZ; i++)
            {
                p.z = i * size;
                p.x = 0;
                Vector3 startPos = IsoUtil.IsoToScreen(p.x, p.y, p.z);
                p.x = spanX * size;
                Vector3 endPos = IsoUtil.IsoToScreen(p.x, p.y, p.z);
                Gizmos.DrawLine(transform.TransformPoint(startPos), transform.TransformPoint(endPos));
            }
        }
    }
コード例 #2
0
ファイル: GameIsoWorld.cs プロジェクト: TonyDongGuaPi/joework
    void Click()
    {
        Vector3 scenePos = scene.transform.InverseTransformPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition));
        Vector2 nodePos  = IsoUtil.ScreenToIsoGrid(scene.size, scenePos.x, scenePos.y);

        int nodeX = (int)nodePos.x;
        int nodeZ = (int)nodePos.y;

        if (grid.CheckInGrid(nodeX, nodeZ) && grid.GetNode(nodeX, nodeZ).walkable)
        {
            IsoObject obj = (IsoObject)Instantiate(isoObjectPrefab);
            obj.SetNodePosition(nodeX, nodeZ);
            if (obj.GetWalkable(grid))
            {
                scene.AddIsoObject(obj);
                obj.SetNodePosition(nodeX, nodeZ);
                obj.transform.localScale = Vector3.one;
                obj.SetWalkable(false, grid);
            }
            else
            {
                Destroy(obj.gameObject);
            }
        }
    }
コード例 #3
0
    public void UpdateScreenPos()
    {
        Vector2 ScPos = IsoUtil.IsoToScreen(m_pos3D.x, m_pos3D.y, m_pos3D.z);
        Vector3 pos   = transform.localPosition;

        pos.x = ScPos.x;
        pos.y = ScPos.y;
        transform.localPosition = pos;
        UpdateSpanPos();
    }
コード例 #4
0
    protected override void OnDrawGizmos()
    {
        base.OnDrawGizmos();
        if (world != null && m_path != null && m_path.Count > 1)
        {
            Gizmos.color = Color.red;

            PathNode startNode  = m_path[0];
            Vector3  startPos   = (Vector3)IsoUtil.IsoPosToLocalPos(startNode.x, 0f, startNode.z) * world.cellSize - transform.localPosition;
            Vector3  startWorld = transform.TransformPoint(startPos);
            startWorld.z = -1f;

            for (int i = 1; i < m_path.Count; ++i)
            {
                PathNode endNode   = m_path[i];
                Vector3  nextPos   = (Vector3)IsoUtil.IsoPosToLocalPos(endNode.x, 0f, endNode.z) * world.cellSize - transform.localPosition;
                Vector3  worldNext = transform.TransformPoint(nextPos);
                worldNext.z = -1f;

                Gizmos.DrawLine(startWorld, worldNext);
                startWorld = worldNext;
            }
        }
    }