public void Update() { if (Input.GetAxisRaw("Horizontal" + m_SuffixName) > 0 && m_Direction != SnakeHead.Direction.LEFT) { m_Direction = SnakeHead.Direction.RIGHT; } else if (Input.GetAxisRaw("Horizontal" + m_SuffixName) < 0 && m_Direction != SnakeHead.Direction.RIGHT) { m_Direction = SnakeHead.Direction.LEFT; } else if (Input.GetAxisRaw("Vertical" + m_SuffixName) > 0 && m_Direction != SnakeHead.Direction.DOWN) { m_Direction = SnakeHead.Direction.UP; } else if (Input.GetAxisRaw("Vertical" + m_SuffixName) < 0 && m_Direction != SnakeHead.Direction.UP) { m_Direction = SnakeHead.Direction.DOWN; } if (Input.GetAxisRaw("EatAbility" + m_SuffixName) > 0) { UseFirstAbility(); } if (Input.GetAxisRaw("ShieldAbility" + m_SuffixName) > 0) { UseSecondAbility(); } if (Input.GetAxisRaw("FreezeAbility" + m_SuffixName) > 0) { UseThirdAbility(); } }
public override Vector2Int GetSpawningPosition() { List <CustomTile> _tiles = GameData.Instance.m_TileManager.GetEmptyTiles(); if (_tiles.Count == 0) { return(Vector2Int.zero); } if (AIManager.Instance.m_CurrentStateIndex <= 1) { return(GameData.Instance.m_TileManager.GetPosition(_tiles[Random.Range(0, _tiles.Count)])); } else { SnakeHead.Direction _dir = GameData.Instance.m_Players[0].m_Controller.m_Direction; Vector2Int _playerPosition = GameData.Instance.m_Players[0].m_TilePosition; List <Vector2Int> _availablePosition; switch (_dir) { case SnakeHead.Direction.UP: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.y > _playerPosition.y).ToList(); break; case SnakeHead.Direction.RIGHT: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.x > _playerPosition.x).ToList(); break; case SnakeHead.Direction.DOWN: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.y < _playerPosition.y).ToList(); break; case SnakeHead.Direction.LEFT: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.x < _playerPosition.x).ToList(); break; case SnakeHead.Direction.NONE: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).ToList(); break; default: _availablePosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).ToList(); break; } int _randomIndex = (int)Random.Range(0, _availablePosition.Count); return(_availablePosition[_randomIndex]); } }
public override Vector2Int GetSpawningPosition() { List <CustomTile> _tiles = GameData.Instance.m_TileManager.GetEmptyTiles(); if (_tiles.Count == 0) { return(Vector2Int.zero); } List <Vector2Int> _availablesPosition; Vector2Int _playerPosition = GameData.Instance.m_Players[0].m_TilePosition; _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).ToList(); if (AIManager.Instance.m_CurrentStateIndex == 0) { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => (p.x == 0 || p.x == GameData.Instance.m_TileManager.GetRestrictedMapSize().x)).ToList(); } else if (AIManager.Instance.m_CurrentStateIndex == 1) { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.y == _playerPosition.y && (p.x == 0 || p.x == GameData.Instance.m_TileManager.GetRestrictedMapSize().x)).ToList(); } else if (AIManager.Instance.m_CurrentStateIndex > 1) { SnakeHead.Direction _dir = GameData.Instance.m_Players[0].m_Controller.m_Direction; if (_dir == SnakeHead.Direction.LEFT || _dir == SnakeHead.Direction.RIGHT) { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.y == _playerPosition.y && (p.x == 0 || p.x == GameData.Instance.m_TileManager.GetRestrictedMapSize().x)).ToList(); } else if (_dir == SnakeHead.Direction.UP || _dir == SnakeHead.Direction.DOWN) { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.x == _playerPosition.y && (p.y == 0 || p.y == GameData.Instance.m_TileManager.GetRestrictedMapSize().x)).ToList(); } else { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.x == _playerPosition.y && p.y == _playerPosition.y).ToList(); } } else { _availablesPosition = _tiles.Select(t => GameData.Instance.m_TileManager.GetPosition(t)).Where(p => p.x == 0 || p.x == GameData.Instance.m_TileManager.GetRestrictedMapSize().x || p.y == 0 || p.y == GameData.Instance.m_TileManager.GetRestrictedMapSize().y).ToList(); } int _randomIndex = (int)Random.Range(0, _availablesPosition.Count); return(_availablesPosition[_randomIndex]); }
public override Quaternion GetBestOrientation() { if (AIManager.Instance.m_CurrentStateIndex == 0) { return(Quaternion.Euler(0, 90 * (int)UnityEngine.Random.Range(0, 3), 0)); } if (AIManager.Instance.m_CurrentStateIndex >= 1) { SnakeHead.Direction _dir = GameData.Instance.m_Players[0].m_Controller.m_Direction; if (_dir == SnakeHead.Direction.UP || _dir == SnakeHead.Direction.DOWN) { return(Quaternion.identity); } else { return(Quaternion.Euler(0, 90, 0)); } } else { return(Quaternion.identity); } }