如何解决如何设置随机旋转物体的速度?团结
我有一个平台,它必须以随机顺序在 x、y 和 z 方向上同时旋转,向量 x 和 z 的最大旋转度数为 10 度,在“y”方向上的旋转为 360 度。
代码如下:
using UnityEngine;
public class PlaneRotating : MonoBehaviour
{
void Start() {
}
void Update()
{
Vector3 euler = transform.eulerAngles;
euler.z = Random.Range(-10f,10f);
euler.y = Random.Range(0f,360f);
euler.x = Random.Range(-10f,10f);
transform.eulerAngles = euler;
}
}
一切正常,除了一定的旋转速度,因为我不知道如何设置。
你能告诉我如何设置速度吗?
解决方法
您可以在位置之间lerp,这不是控制速度的最佳方式,因为大旋转会更快,小旋转会更慢,但您可以在时间上获得稳定的旋转。
using UnityEngine;
public class PlaneRotating : MonoBehaviour
{
public Transform transform;
Vector3 lastPos
Vector3 newPos
float t;
void Start()
{
lastPos = transform.eulerAngles;
NewAngle();
}
void Update()
{
transform.eulerAngles = Vector3.Lerp(lastPos,newPos,t);
t+=0.01f;
if(t>1)
NewAngle();
}
void NewAngle()
{
lastPos = newPos;
newPos = new Vector3(
Random.Range(-10f,10f),Random.Range(0f,360f),Random.Range(-10f,10f));
t = 0;
}
}
然后您可以使用 Time.deltaTime 使其保持一致,这只是一个示例。
如果你想控制速度
您可以添加两个向量,然后每隔 x 秒或 x 帧定期进行随机化。你改变方向。 youtube 上有很多不错的视频,但是如果你想得到一个好的答案,你需要更清楚。我的第一个答案是不让你用随机数控制速度,只能平滑过渡,你可以选择它们变化的速度。对于恒定速度,您必须执行以下操作
void Update()
{
transform.eulerAngles += new Vector3(0,1,0);
}
如果我能提供任何进一步的帮助,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。