// Update is called once per frame void Update() { if(m_selected) { Vector3 newPos = m_worldGrid.hoverTile.transform.position; newPos.y += HoverPlane; transform.position = newPos; if(Input.GetMouseButtonUp(0)) { m_latched = false; } if(Input.GetMouseButtonDown(0) && !m_latched) { m_selected = false; transform.position = m_positionWhenPickedUp; if(Faction.HomeArmy == this) { if(m_tile && m_worldGrid.hoverTile.IsPassable) { SetObjective(m_worldGrid.hoverTile); } } else { Transform ordersOrigin = Faction.HomeArmy.transform; Transform orders = (Transform)Instantiate(OrdersPrefab, ordersOrigin.position, ordersOrigin.rotation); OrdersCourierScript os = orders.gameObject.GetComponent<OrdersCourierScript>(); os.TargetArmy = this; os.TargetArmyNewObjective = m_worldGrid.hoverTile; os.Faction = Faction; os.Tile = Faction.HomeArmy.Tile; Faction.m_orders.Add(os); } } } else { if(transform.position != m_targetPos) { Vector3 delta = m_targetPos - transform.position; float deltaDist = delta.magnitude; if(deltaDist > Speed) { delta.Normalize(); delta *= Speed; } else { if(m_tile) { m_tile.ArmyExit(this); } m_tile = m_targetTile; m_tile.ArmyEnter(this); } transform.position += delta; } } }
// Use this for initialization void Start() { m_worldGrid = GameObject.Find("WorldGrid").GetComponent<WorldGridScript>(); m_pathPlanner = this.GetComponent<WorldPathPlanner>(); m_xBound = m_worldGrid.XBounds; m_yBound = m_worldGrid.YBounds; m_targetPos = transform.position; this.gameObject.GetComponent<Renderer>().material.color = Faction.FactionColor; RaycastHit tileHit; bool hit = Physics.Raycast(transform.position, new Vector3(0.0f, -1.0f, 0.0f), out tileHit, 2.0f * HoverPlane); if(hit) { WorldTileScript tile = tileHit.collider.gameObject.GetComponent<WorldTileScript>(); if(tile) { m_tile = tile; m_tile.ArmyEnter(this); } } Territory = new List<WorldTileScript>(); }