public void ChangeCard(TileCard a, TileCard b) { //tilemap素组内的调整 TileCard c = a; m_tileCardMap[a.m_Anchor.x, a.m_Anchor.y] = b; m_tileCardMap[b.m_Anchor.x, b.m_Anchor.y] = c; //tilecard内的anchor的调整。 TileCardAnchor ca = a.m_Anchor; a.m_Anchor = b.m_Anchor; b.m_Anchor = ca; //tilecard内的currentlocation的调整。 a.m_currentLocation = a.m_Anchor.position; b.m_currentLocation = b.m_Anchor.position; //回到具体的位置。 a.StopMove(); b.StopMove(); AlltileGetSurroundCard(); }
public void StartByTileCardManger(TileCardAnchor tca) { m_BackSpriteRenderer.sprite = m_BackGroundSprites; m_FrontSpriteRenderer.sprite = m_FrontGroundSprites; m_currentLocation = (Vector2)transform.position; m_Anchor = tca; }
public void AlltileGetSurroundCard() { ///测定计算周围的卡片 foreach (TileCard tc in m_tileCardMap) { TileCard up = null; TileCard down = null; TileCard left = null; TileCard right = null; TileCardAnchor upAnchor = new TileCardAnchor(tc.m_Anchor.x, tc.m_Anchor.y + 1); TileCardAnchor downAnchor = new TileCardAnchor(tc.m_Anchor.x, tc.m_Anchor.y - 1); TileCardAnchor leftAnchor = new TileCardAnchor(tc.m_Anchor.x - 1, tc.m_Anchor.y); TileCardAnchor rightAnchor = new TileCardAnchor(tc.m_Anchor.x + 1, tc.m_Anchor.y); if (upAnchor.x >= 0 && upAnchor.x < 4 && upAnchor.y >= 0 && upAnchor.y < 4) { up = m_tileCardMap[upAnchor.x, upAnchor.y]; } if (downAnchor.x >= 0 && downAnchor.x < 4 && downAnchor.y >= 0 && downAnchor.y < 4) { down = m_tileCardMap[downAnchor.x, downAnchor.y]; } if (leftAnchor.x >= 0 && leftAnchor.x < 4 && leftAnchor.y >= 0 && leftAnchor.y < 4) { left = m_tileCardMap[leftAnchor.x, leftAnchor.y]; } if (rightAnchor.x >= 0 && rightAnchor.x < 4 && rightAnchor.y >= 0 && rightAnchor.y < 4) { right = m_tileCardMap[rightAnchor.x, rightAnchor.y]; } NeighborCard nc = new NeighborCard(up, down, left, right); tc.StartByTileCardMangerSetNeighbor(nc); } }
private void Awake() { m_Calculate = GetComponent <TileObjCalculate>(); for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { TileCardAnchor tca = new TileCardAnchor(x, y); m_tileCardAnchorMap[x, y] = tca; } } foreach (TileCardAnchor tca in m_tileCardAnchorMap) { GameObject obj = Instantiate(m_TileCardPrefab, tca.position, transform.rotation); m_tileCardMap[tca.x, tca.y] = obj.GetComponent <TileCard>(); StringBuilder sb = new StringBuilder(tca.x + "," + tca.y); obj.name = sb.ToString(); obj.GetComponent <TileCard>().StartByTileCardManger(tca); } ///测定计算周围的卡片 foreach (TileCard tc in m_tileCardMap) { TileCard up = null; TileCard down = null; TileCard left = null; TileCard right = null; TileCardAnchor upAnchor = new TileCardAnchor(tc.m_Anchor.x, tc.m_Anchor.y + 1); TileCardAnchor downAnchor = new TileCardAnchor(tc.m_Anchor.x, tc.m_Anchor.y - 1); TileCardAnchor leftAnchor = new TileCardAnchor(tc.m_Anchor.x - 1, tc.m_Anchor.y); TileCardAnchor rightAnchor = new TileCardAnchor(tc.m_Anchor.x + 1, tc.m_Anchor.y); if (upAnchor.x >= 0 && upAnchor.x < 4 && upAnchor.y >= 0 && upAnchor.y < 4) { up = m_tileCardMap[upAnchor.x, upAnchor.y]; } if (downAnchor.x >= 0 && downAnchor.x < 4 && downAnchor.y >= 0 && downAnchor.y < 4) { down = m_tileCardMap[downAnchor.x, downAnchor.y]; } if (leftAnchor.x >= 0 && leftAnchor.x < 4 && leftAnchor.y >= 0 && leftAnchor.y < 4) { left = m_tileCardMap[leftAnchor.x, leftAnchor.y]; } if (rightAnchor.x >= 0 && rightAnchor.x < 4 && rightAnchor.y >= 0 && rightAnchor.y < 4) { right = m_tileCardMap[rightAnchor.x, rightAnchor.y]; } NeighborCard nc = new NeighborCard(up, down, left, right); tc.StartByTileCardMangerSetNeighbor(nc); } }