【问题标题】:Move object with different speed以不同的速度移动物体
【发布时间】:2016-09-13 14:40:32
【问题描述】:

我有一个一直在上升的物体。我希望我的对象首先以一定的速度上升,然后再以另一个速度上升(比如 5 秒后)。我只是在使用

transform.Translate (Vector3.up * speed, Space.World);

但它只是一直以我不想要的相同速度上升。

【问题讨论】:

  • 您是否尝试过自己编写解决此问题的代码?请附上显示您最佳尝试的相关代码。
  • 实际上我不知道该怎么做。这是我能做的最好的。@Serlite
  • 你试过简单地在 5 秒后改变速度吗?
  • @solo365 您应该先在此处查看提问的详细信息(查看所有其他问题):stackoverflow.com/help/how-to-ask Unity 文档已经涵盖了这一点以及您的大部分问题。我通过谷歌搜索“速度随时间的统一”找到了答案
  • 听起来你想要加速/减速。关键是逐渐改变speed。请参阅this 问题。

标签: c# unity3d


【解决方案1】:

你可以在 5 秒后简单地改变速度。

你的班级应该是这样的:

public IEnumerator Start() {
    yield return new WaitForSeconds(5);
    speed *= 2;
}

public void Update() {
    transform.Translate(Vector3.up * speed * Time.deltaTime, Space.World);
}

* Time.deltaTime 添加到翻译计算中很重要,否则您的实际速度将因一台机器而异。

如果您每帧添加或减去一个值,您应该乘以 Time.deltaTime。当您与 Time.deltaTime 相乘时,您实质上是在表达:我想以每秒 10 米的速度移动这个对象,而不是每帧 10 米。

https://docs.unity3d.com/ScriptReference/Time-deltaTime.html

【讨论】:

  • 非常感谢@sokkyoku
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多