我想在Z轴上以某种特定的度数,速度和方向旋转物体,然后停止。
这是我的代码:
Quaternion targetRotation = Quaternion.AngleAxis(currentRotation.rotateValue, Vector3.forward);
float step = currentRotation.speed;
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, step);
有了这个,我可以以所需的速度和角度移动,但方向不正确。我做的是在它达到180之后将它移动180°我将它移动360并且这是一个循环。问题是360后而不是顺时针移动它逆时针移动。不知道这里发生了什么需要对这个问题的绝望帮助。
提前致谢。
答案 0 :(得分:0)
如果我理解你正在尝试做什么,那么也许这样的事情会起作用:
private float anglesToRotate;
private Quaternion targetRotation, initialRotation;
private float elapsedTime, duration, speed;
void Start()
{
time = 0.0f;
duration= 0.0f;
}
void Update()
{
if (time < duration)
{
time += Time.deltaTime;
transform.rotation = Quaternion.Lerp(
initialRotation,
targetRotation,
(speed * time) / duration);
}
}
public void Rotate(float angles, float speed, float duration)
{
initialRotation = transform.rotation;
targetRotation = Quaternion.Euler(
transform.rotation.x,
transform.rotation.y,
transform.rotation.z + anglesToRotate);
time = 0.0f;
}
注意:
Quaternion.Lerp
)。