using System.Collections; using System.Collections.Generic; using UnityEngine; //プレイヤーを目的地まで誘導 public class PlayerMove : MonoBehaviour { float moveSpeed = 0.3f; bool isMoveBreak = false;//ループ脱出用 bool isAnimationStart = false; public IEnumerator Move(Vector3 moveTargetPos) { //Debug.Log("移動開始 ターゲット = " + moveTargetPos); //Debug.Log("moveSpeed = " + moveSpeed); //-------------------------------------------------------------------------------------- //GetComponent().enabled = false; //-------------------------------------------------------------------------------------- Vector3 startPos = transform.position; moveTargetPos.y = transform.position.y; if (!isAnimationStart) { //moveアニメーションさせる //_charaanime.AnimatorBool("move", 移動速度); GetComponent().animSetFloat("move", 1f); } //スタート地点から現在の位置の距離がスタート地点から目的地までの距離より小さい間ループ while (Vector3.Distance(startPos, transform.position) < Vector3.Distance(startPos, moveTargetPos)) { //移動先が更新されたらループから脱出 if (isMoveBreak) { isMoveBreak = false; Debug.Log("LoopBreak"); yield break; } //Debug.Log("移動中" + moveTargetPos); //angleからプレイヤーの向きを変更 transform.LookAt(new Vector3(moveTargetPos.x, transform.position.y, moveTargetPos.z)); //移動 transform.Translate(Vector3.forward * moveSpeed); //Debug.Log("移動中"); yield return null; } //-------------------------------------------------------------------------------------- //移動時間を初期化 GetComponent().isKinematic = true; yield return null; GetComponent().isKinematic = false; //1ドラッグの移動が終了したら移動スピードを初期化 if (GetComponent().getMovePosListCount() == 0) { moveSpeed = 0.3f; //アニメーションを止める GetComponent().Standby(); } //-------------------------------------------------------------------------------------- //プレイヤーの移動が終了したことを伝える GetComponent().isPlayerMoveDoingFalse(); //Debug.Log("移動終了"); } //Playerから、リストが削除されたときに呼び出される public void moveBreak() { isMoveBreak = true; } //ダッシュのスピード書き換え public void rewriteMoveSpeed(float f) { moveSpeed = f; } }