public override void MoveHero(Vector3 moveV) { if (!photonView.IsMine || IsCannotMoveState() || IsDie) { Debug.Log("무브히어로가 묵살되었음." + moveV + "포톤이 내것인지? = " + photonView.IsMine); return; } base.MoveHero(moveV); E_MoveDir dir = GetMostMoveDir(moveV); if (lastDir.Equals(dir)) { return; } lastDir = dir; anim.SetBool("forward", false); anim.SetBool("backward", false); anim.SetBool("left", false); anim.SetBool("right", false); anim.SetBool("idle", false); switch (dir) { case E_MoveDir.Forward: anim.SetBool("forward", true); break; case E_MoveDir.Backward: anim.SetBool("backward", true); break; case E_MoveDir.Left: anim.SetBool("left", true); break; case E_MoveDir.Right: anim.SetBool("right", true); break; case E_MoveDir.NONE: anim.SetBool("idle", true); break; } }
protected E_MoveDir GetMostMoveDir(Vector3 moveDir) { E_MoveDir dir = E_MoveDir.NONE; if (moveDir.sqrMagnitude < Mathf.Epsilon) { return(dir); } float x = moveDir.x; float z = moveDir.z; if (Mathf.Abs(x) > Mathf.Abs(z)) { if (x > Mathf.Epsilon) { dir = E_MoveDir.Right; } else { dir = E_MoveDir.Left; } } else { if (z > Mathf.Epsilon) { dir = E_MoveDir.Forward; } else { dir = E_MoveDir.Backward; } } return(dir); }
protected E_MoveDir GetMostMoveDir(Vector3 moveDir) { E_MoveDir dir = E_MoveDir.NONE; if (moveDir.sqrMagnitude < Mathf.Epsilon) { return(dir); } float x = moveDir.x; float z = moveDir.z; if (Mathf.Abs(x) > Mathf.Abs(z)) { if (x > Mathf.Epsilon) { dir = E_MoveDir.Right; } else { dir = E_MoveDir.Left; } } else { if (z > Mathf.Epsilon) { dir = E_MoveDir.Forward; } else { dir = E_MoveDir.Backward; } } /* * float maxDir=0f; * float dot = Vector3.Dot(moveDir, Vector3.forward); * if (dot > maxDir) * { * dir = E_MoveDir.Forward; * maxDir = dot; * } * dot = Vector3.Dot(moveDir, Vector3.back); * if (dot > maxDir) * { * dir = E_MoveDir.Backward; * maxDir = dot; * } * dot = Vector3.Dot(moveDir, Vector3.left); * if (dot > maxDir) * { * dir = E_MoveDir.Left; * maxDir = dot; * } * dot = Vector3.Dot(moveDir, Vector3.right); * if (dot > maxDir) * { * dir = E_MoveDir.Right; * maxDir = dot; * } */ return(dir); }