//public string CheckCurrentStatus(RedirectedUnit[] otherUnits)
    //{
    //    List<Object2D> otherUsers = GetUsers(otherUnits);

    //    if (status == "WALL_RESET")
    //    {
    //        if (!resetter.NeedWallReset(realUser, realSpace))
    //        {
    //            status = "IDLE";
    //            resetter.NeedWallReset(realUser, realSpace);
    //        }
    //    }
    //    else if (status == "USER_RESET")
    //    {
    //        if (!resetter.NeedUserReset(realUser, otherUsers))
    //            status = "IDLE";
    //    }
    //    else if (status == "IDLE")
    //    {
    //        if (resetter.NeedWallReset(realUser, realSpace))
    //        {
    //            resultData.AddWallReset();
    //            status = "WALL_RESET";
    //        }
    //        else if (resetter.NeedUserReset(realUser, otherUsers))
    //        {
    //            resultData.AddUserReset();
    //            status = "USER_RESET";
    //        }
    //        else if (!GetEpisode().IsNotEnd())
    //            status = "END";
    //    }

    //    return status;
    //}

    //public void Simulation(RedirectedUnit[] otherUnits)
    //{
    //    string currentStatus = CheckCurrentStatus(otherUnits);

    //    switch (currentStatus)
    //    {
    //        case "IDLE":
    //            Move();
    //            break;
    //        case "WALL_RESET":
    //            ApplyWallReset();
    //            break;
    //        case "USER_RESET":
    //            ApplyUserReset();
    //            break;
    //        default:
    //            break;
    //    }
    //}

    //public void ApplyUserReset()
    //{
    //    resetter.ApplyReset(realUser, virtualUser, realSpace,"User"); // 필요하면 User Reset과 Wall Reset의 방법을 다르게 만들 수 있도록 이런 식으로 구현
    //}

    //public void ApplyWallReset()
    //{
    //    resetter.ApplyReset(realUser, virtualUser, realSpace,"Wall");
    //}

    public void Move()
    {
        (Vector2 deltaPosition, float deltaRotation) = controller.VirtualMove(realUser, virtualUser, virtualSpace);         // 가상 유저를 이동 (시뮬레이션)
        (Redirector.GainType type, float degree)     = redirector.ApplyRedirection(realUser, deltaPosition, deltaRotation); // 왜곡시킬 값을 계산
        controller.RealMove(realUser, type, degree);                                                                        // 실제 유저를 이동

        resultData.setGains(type, redirector.GetApplidedGain(type));
        resultData.AddElapsedTime(Time.fixedDeltaTime);
    }