【问题标题】:How to spawn solvers with initial orientation?如何生成具有初始方向的求解器?
【发布时间】:2019-12-04 06:54:12
【问题描述】:

似乎很难让已配置的求解器在某个方向上实例化,就像在 SolverTarget 之前一样。看来您必须手动设置转换值、SolverHandler 的目标值,并在您正在使用的 Solver 上另外调用 SnapTo,否则您将进行某种插值。 我正在尝试使用 RadialView 进行此操作,但我已经花了很长时间才能正确完成旋转和所有操作...

正确的方法是什么?设置位置、旋转,完成了吗?

【问题讨论】:

    标签: mrtk


    【解决方案1】:

    如果具有 RadialView 的对象是在编辑时创建的并且处于活动状态,它将按照您的描述捕捉其方向。

    不幸的是,实例化一个对象,或使用解算器重新启用现有对象将导致它“解算”到其原始位置。我发现强制正确位置的最简单方法是将单帧的 lerp 时间设置为“0”。

    [SerializeField]
    private GameObject objectWithSolver = null;
    
    private IEnumerator InitialSolve(Solver solver)
    {
        float originalMoveLerp = solver.MoveLerpTime;
        float originalRotateLerp = solver.RotateLerpTime;
    
        solver.MoveLerpTime = 0.0f;
        solver.RotateLerpTime = 0.0f;
    
        yield return null;
    
        solver.MoveLerpTime = originalMoveLerp;
        solver.RotateLerpTime = originalRotateLerp;
    }
    
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.J))
        {
            GameObject newObject = Instantiate(objectWithSolver);
            newObject.SetActive(true);
            StartCoroutine(InitialSolve(newObject.GetComponent<Solver>()));
        }
    }
    

    也就是说,这听起来像是一个很棒的功能请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      相关资源
      最近更新 更多