【发布时间】:2019-04-29 04:50:29
【问题描述】:
我正在制作一个脚本,它应该像操纵杆一样旋转游戏对象,这意味着只有 X 轴和 Z 轴必须改变。所以我使用 sin 和 cos 函数来计算旋转角度。但由于某种原因,Y 轴也发生了变化。
public float alpha;
void Update () {
alpha += Time.deltaTime;
var x = R * Mathf.Cos(alpha);
var z = R * Mathf.Sin(alpha);
transform.Rotate(new Vector3(x, 0, z) * Time.deltaTime);
}
所以问题是如何阻止 Y 轴发生变化,或者也许还有另一种方法可以像操纵杆一样旋转对象。
附:我正在使用 Unity 2017.4.13f1
【问题讨论】:
-
我不是 Unity 用户,但我并不完全理解您的代码。什么是 R(半径?旋转矩阵?)为什么要将旋转向量乘以增量时间,而不是目标角度?
-
deltaTime 用于非常平滑地增加角度,R 是增加旋转角度的乘数。它只是一个浮点数。