我想在一段时间内在轴上旋转特定角度的物体.一旦达到极限(比如5度),重复反方向.
我可以使用Quaternion.Euler()进行5度旋转,但是如何检查它是否达到5度并开始将方向反转到-5度?
所以在Update()我这样做:
int dir = 1; // somewhere global
Quaternion r = Quaternion.Euler(0, Timer.deltaTime * dir, 0);
transform.rotation *= r;
// I want to: if the "angle is >= 5f", i want to do dir *= -1 to reverse it
if (/* angle delta is >= 5f or <= -5f */)
{
dir *= -1;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
如果您只想前后旋转,可以使用正弦波来回平稳移动.
public class rotator : MonoBehaviour {
public float _Angle;
public float _Period;
private float _Time;
// Update is called once per frame
void Update () {
_Time = _Time + Time.deltaTime;
float phase = Mathf.Sin(_Time / _Period);
transform.localRotation = Quaternion.Euler( new Vector3(0, phase * _Angle, 0));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4923 次 |
| 最近记录: |