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)); } } }
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); } } }
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(); }
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; } } }