如何生成具有初始方向的求解器?
How to spawn solvers with initial orientation?
似乎很难让已配置的求解器像总是在 SolverTarget 前面那样以特定方向实例化。看来您必须手动设置转换值、SolverHandler 的目标值,并在您正在使用的求解器上另外调用 SnapTo,否则您将进行某种插值。
我正在用 RadialView 尝试这个,我已经花了太长时间才能正确地完成这个,旋转和所有...
正确的方法是什么?设置位置、旋转,完成了吗?
如果具有 RadialView 的对象是在编辑时创建的并且处于活动状态,它将按照您所描述的那样捕捉其方向。
不幸的是,实例化对象或使用解算器重新启用现有对象将导致它 "solve" 与其原始位置相反。我发现强制正确位置的最简单方法是将单帧的 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>()));
}
}
也就是说,这听起来像是一个很棒的功能请求。
似乎很难让已配置的求解器像总是在 SolverTarget 前面那样以特定方向实例化。看来您必须手动设置转换值、SolverHandler 的目标值,并在您正在使用的求解器上另外调用 SnapTo,否则您将进行某种插值。 我正在用 RadialView 尝试这个,我已经花了太长时间才能正确地完成这个,旋转和所有...
正确的方法是什么?设置位置、旋转,完成了吗?
如果具有 RadialView 的对象是在编辑时创建的并且处于活动状态,它将按照您所描述的那样捕捉其方向。
不幸的是,实例化对象或使用解算器重新启用现有对象将导致它 "solve" 与其原始位置相反。我发现强制正确位置的最简单方法是将单帧的 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>()));
}
}
也就是说,这听起来像是一个很棒的功能请求。