这里有2个来自编辑器和电话的视频:https://drive.google.com/drive/folders/1gs0Ik9EojhbbPUZh0lNmPigVHWpAjERi?usp=sharing
在电话中的视频中,您可以看到行星如何快速地上下颠簸(实际上,箭头在颠簸)。
此处为箭头指向行星中心的代码,用于控制和移动。
private void Update()
{
body.transform.rotation = Quaternion.FromToRotation(body.transform.up, (body.transform.position - transform.position).normalized) * body.transform.rotation * Quaternion.Euler(0, body.GetComponent<ArrowController>().Joystick.Horizontal * 110 * Time.deltaTime, 0);
if (Math.Abs((body.transform.position - transform.position).magnitude - body.OrbitRadius) > 0.01)
{
float shift = body.OrbitRadius - (body.transform.position - transform.position).magnitude;
body.transform.position += body.transform.up * shift;
}
body.transform.position += body.transform.forward * Speed * Time.deltaTime;
}
为什么会这样?
通常,不要设置对象的位置和旋转。
我添加了transform.Rotate()和transform.Translate(),但没有帮助。我不知道它是如何工作的,为什么问题只出现在电话上,但我找到了解决方法。