Unity 如何使 GameObject Speed 获得速度

Posted

技术标签:

【中文标题】Unity 如何使 GameObject Speed 获得速度【英文标题】:Unity How to make GameObject Speed gain velocity 【发布时间】:2015-01-25 20:00:31 【问题描述】:

我在 Unity3D 中制作的 Unity3D 游戏中有一个鱼雷,并且我有一个从潜艇发射的鱼雷。我怎样才能让鱼雷像鱼雷一样开火(开始时非常慢),然后像电影中那样获得大量动力并加快速度。

以下是我如何执行此操作的代码,但效果不是很好。

    float torpedoSpeed = (0.00001f) * 155.2f;

   //move
    gameObject.transform.position += new Vector3(velocity, 0, 0) * 15.5f;

【问题讨论】:

“效果不佳”对您意味着什么?它会变得更快吗? 使鱼雷依赖于时间变量,时间越长自然会增加。物体的速度也是如此。 哇,太棒了!这样就行了! gameObject.transform.position += new Vector3(velocity * timeLiving, 0, 0) * 5.5f; (这是修复) 您可能想使用 Time.deltaTime 而不是 timeliving 以使其更顺畅,对于您的下一个问题,请使用标签 unity3d。这不是你所说的统一(是的,有区别) 你可能想设置最大速度,因为鱼雷也不能通过一定的速度 【参考方案1】:

现代鱼雷实际上可以加速,因为它们是被推进的。因此,诀窍是加速鱼雷。

加速需要一个方向的力。您必须首先确定鱼雷的质量,这将允许您对其施加力以使其加速。

所以加速度是施加的力除以物体的质量。


话虽如此,您可以在 Unity 中通过简单地使用以下方式为对象添加力:

gameObject.rigidbody.mass = 0.5;

gameObject.rigidbody.AddForce(100, 0, 0);

或者您可以添加一个恒定的力,使鱼雷始终保持加速。

gameObject.constantForce.relativeForce = Vector3(0, 0, 1);

【讨论】:

哇!非常感谢您的精彩回答!我试试看:)

以上是关于Unity 如何使 GameObject Speed 获得速度的主要内容,如果未能解决你的问题,请参考以下文章

Unity如何生成具有旋转速度的GameObject

unity3d 如何把gameobject上的脚本删除

关于unity3d使物体消失的代码问题

unity3d 中如何去除掉一个GameObject的MeshRenderer

如何更新 Unity GameObject 以沿样条曲线移动?

unity中如何将component重置为默认值