На этом уроке мы наконец превратим нашу пешку в одну из четырёх фигур.
Дата отправки отчёта:
13 июня 2018 г.
Задание выполнено: за
2 час. 54 мин.
Чему научился:
Чтоб начать сначала партию можно добавить кнопку или ГО и при клике по нему chess = new Chess(); // потом сделать заново переинициализацию игровых объектов, перерисовать согласно фен return; или просто перегурзить сцену с помощью функции SceneManager.LoadScene(0)
Что было сложным:
можно сделать рефакторинг функции void PickObject(Vector2 fromPosition) спомощью Physics2D.Raycast, узнав имя объекта по которому кликнули в функции InitGameObjects() в конце добавляем строчку для тагов к словорю превращения: //добавляем tag "PromotionFigures" для всех промоушен фигур предварительно добавив его в список тагов в редакторе Unity foreach (GameObject prom in promots.Values) prom.tag = "PromotionFigures";
//пометить, куда может сходить фигура, которую подняли с доски void PickObject(Vector2 fromPosition) { //если выбираем фигуру для превращения пешки if (onPromotionMove != "" && (onPromotionMove[0] =='P' || onPromotionMove[0] == 'p')) { // делаем "выстрел" в точке клика мышкой на экране RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); //если есть коллайдер и данный объект - фигура для выбора превращения пешки if (hit.collider != null && hit.collider.tag == "PromotionFigures") { //Debug.Log("Target name: " + hit.collider.name); onPromotionMove += hit.collider.name; //делаем ход chess = chess.Move(onPromotionMove); }//иначе пропускаем ход и откатываемся
onPromotionMove = "";//убираем флаг превращения пешки ShowFigures(); //показваем фигуры после хода MarkSquaresFrom();//помечаем клетки с которых фигуры могут сходить ShowPromotionFigures();//скрываем фигуры выбора превращений return; } MarkSquaresTo(VectorToSquare(fromPosition)); // MarkSquaresTo("e2"); }
Научился: Закончили реализацию преобразования пешки в одну из фигур при достижении последней горизонтали, а заодно и реализацию всего раздела правил перемещения фигур.