【问题标题】:[Unity]How to draw a Ring Line in 3D[Unity]如何在3D中绘制环形线
【发布时间】:2017-12-18 09:25:26
【问题描述】:

我想画一个做圆周运动的物体的轨迹,但我不知道怎么做。 你能告诉我一个好方法吗?

【问题讨论】:

  • 循环是什么意思?你尝试过什么?
  • @maksymiuk 对不起我的英语不好。我想画一条像太阳系仲裁一样的线。
  • 实际上只是在空间中渲染线条(在一个圆圈中),您可以考虑使用 GL 库。但是现在你的问题中没有足够的信息来实现它,因为我们不知道你是如何设置作用在物体上的力或移动它的。尝试包含移动代码,也许还包括场景的屏幕截图,以便我们更好地了解它的设置方式。
  • 如果你想在运行时使用 trailRenderer,也许你可以在对象上使用它:docs.unity3d.com/Manual/class-TrailRenderer.html

标签: unity3d unity5 unityscript


【解决方案1】:

我没有围绕某物进行环绕,但我正在使用 Cos 和 Sin 来生成围绕该对象的静态项目。 如果您使用 TrailRenderer 并使用 MathF cos 和 sin 来围绕对象旋转。

var y = amplitude * MathF.cos(Time.timeSinceLevelLoaded * speed) + currentPosY
var x = amplitude * MathF.sin(Time.timeSinceLevelLoaded * speed) + currentPosX

我没看过,但是 youtube 上的“Board to bits”有一个关于这个问题的教程。 space orbiting for a planet playlist.

希望这对你来说是正确的方向。

【讨论】:

    【解决方案2】:

    感谢您的大量回复。 我发现它适用于以下...

    void drawLine()
    {
    
        Vector3[] points = new Vector3[segments+1];
        for (int i = 0; i< segments; i++)
        {
            float angle = ((float)i / (float)segments) * 360 * Mathf.Deg2Rad;
            float x = Mathf.Sin(angle) * radius;
            float z = Mathf.Cos(angle) * radius;
            points[i] = new Vector3(x, 0f, z);
        }
        points[segments] = points[0];
        lr.positionCount = segments + 1;
        lr.SetPositions(points);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 2019-11-30
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2015-07-20
      • 2023-04-04
      相关资源
      最近更新 更多