/// <summary> /// 攻撃 /// </summary> /// <param name="player">攻撃する対象(プレイヤー)</param> private void Attack(Player1 player1) { player1.Damage(); }
/// <summary> /// 追う /// </summary> /// <param name="player">追う対象のプレイヤー</param> private void Chase(Player1 player1) { //プレイヤーの配列内番号の取得 Vector2Int playerArrayPos = player1.m_PlayerArrayPos; bool moveXFlag = false; //X軸に移動するかのフラグ bool moveYFlag = false; //Y軸に移動するかのフラグ bool attackFlag = false; //攻撃する //X軸が同じかどうか if (m_ArrayPos.x == playerArrayPos.x) { //Y軸が隣接しているかどうか if ((m_ArrayPos.y + 1) == playerArrayPos.y || (m_ArrayPos.y - 1) == playerArrayPos.y) { //攻撃するためフラグを立てる attackFlag = true; if ((m_ArrayPos.y + 1) == playerArrayPos.y) { m_LookDirection = LookDirection.DOWN; } else { m_LookDirection = LookDirection.UP; } } else { //Y軸を移動させるためフラグを立てる moveYFlag = true; } } //Y軸が同じかどうか if (m_ArrayPos.y == playerArrayPos.y) { //X軸が隣接しているかどうか if ((m_ArrayPos.x + 1) == playerArrayPos.x || (m_ArrayPos.x - 1) == playerArrayPos.x) { //攻撃するためフラグを立てる attackFlag = true; if ((m_ArrayPos.x + 1) == playerArrayPos.x) { m_LookDirection = LookDirection.RIGHT; } else { m_LookDirection = LookDirection.LEFT; } } else { //X軸を移動させるためのフラグを立てる moveXFlag = true; } } //ここまでどちらも移動フラグが立っていなかったら if (!moveXFlag && !moveYFlag && !attackFlag) { //Y座標を優先してそろえていく moveYFlag = true; } //攻撃フラグが立っているかどうか if (attackFlag) { Debug.Log("Attack"); Attack(player1); m_IsMove = false; } //X軸の移動フラグが立っているかどうか if (moveXFlag) { //プレイヤーとの位置の比較(プレイヤーが右側にあるかどうか) if (m_ArrayPos.x <= player1.m_PlayerArrayPos.x) { //右に移動 if (MoveCheck(Direction.Right)) { m_LookDirection = LookDirection.RIGHT; m_MoveAnimationFlag = true; ArrayPosMove(m_MoveBlockAmount, 0); m_IsMove = false; } } else { //左に移動 if (MoveCheck(Direction.Left)) { m_LookDirection = LookDirection.LEFT; m_MoveAnimationFlag = true; ArrayPosMove(-m_MoveBlockAmount, 0); m_IsMove = false; } } } //Y軸の移動フラグが立っているかどうか if (moveYFlag) { //プレイヤーとの位置の比較(プレイヤーが右側にあるかどうか) if (m_ArrayPos.y <= player1.m_PlayerArrayPos.y) { //下に移動 if (MoveCheck(Direction.Bottom)) { m_LookDirection = LookDirection.DOWN; m_MoveAnimationFlag = true; ArrayPosMove(0, m_MoveBlockAmount); m_IsMove = false; } } else { //上に移動 if (MoveCheck(Direction.Top)) { m_LookDirection = LookDirection.UP; m_MoveAnimationFlag = true; ArrayPosMove(0, -m_MoveBlockAmount); m_IsMove = false; } } } }