/// <summary> /// 待機状態処理 /// </summary> public void Idel() { if (!IsMoveable()) { m_stateChange.ChangeState(PlayerState.End); } if (!SameTarget()) { m_stateChange.ChangeState(PlayerState.Move); } LookAtTarget(); }
/// <summary> /// 終了行動 /// </summary> public void End() { //乗っているボードのデータを取得 配列を直す var boarData = m_param.UnderBoard.GetComponent <MoveBoard>().BoardDataValue(); var prevPos = m_param.Target.transform.localPosition; //行動回数のカウント GameData.Instance.MoveCount(); //ゴールしたか if (CheckGoal(boarData.x, boarData.y)) { m_stateChange.ChangeState(PlayerState.Goal); } else { TargetPosSet(); //m_parent.parent = null; m_stateChange.ChangeState(PlayerState.Idle); m_turn.NextTurn(); } }
/// <summary> /// ターゲット方向へ移動 /// </summary> public void Moving() { Vector3 target = m_param.Target.transform.position; int target_x = Mathf.RoundToInt(target.x); int target_z = Mathf.RoundToInt(target.z); Vector3 myPos = m_parent.position; int my_x = Mathf.RoundToInt(myPos.x); int my_z = Mathf.RoundToInt(myPos.z); //ターゲットのポジションと自分のポジションのX,zが一緒なら returu if (target_x == my_x && target_z == my_z) { m_stateChange.ChangeState(PlayerState.Idle); return; } //ターゲットのxと自信のxは同じか if (target_x != my_x) { if (TargetIsRight(target_x, my_x)) { Move(1, 0); } else { Move(-1, 0); } } if (target_z != my_z) { if (TargetIsForward(target_z, my_z)) { Move(0, 1); } else { Move(0, -1); } } }