如何在重力播放器中创建线渲染器运行时

我想创建function像摇滚亚军Game.when玩家进入重力,按住button,然后生成线路和播放器举行线路,并向前移动。 经过这么多研究,我找不到任何东西在谷歌,也在YouTube,然后我张贴的问题。 我把一些片段很好地理解了我想要的东西。 如果有任何人有想法如何做到这一点,然后告诉我。 提前致谢 在这里输入图像说明

在这里输入图像说明

看着游戏的video,这看起来像是玩家和天花板之间的一条简单的直线。

为此,您可以使用Line Renderer组件

当按住手指并且玩家在“天花板对象”的范围内时,您就可以

  • 创建一个空的游戏对象
  • 添加一个线条渲染器组件
  • 并添加一些脚本
[RequireComponent(typeof(LineRenderer))] public class LineController : MonoBehaviour { public GameObject startObject; //eg the player public GameObject endObject; //eg the object on the ceiling private LineRenderer lineRenderer; void Start () { lineRenderer = GetComponent(); //stackoverflow cut out the generic part ;-) } void Update () { lineRenderer.SetPosition(0, startObject.transform.position); lineRenderer.SetPosition(1, endObject.transform.position); } } 

其余的应该是行渲染器组件的configuration,以匹配行的外观,如你所愿。 如果玩家释放他的手指,则删除线路游戏对象。

当玩家在Gravity中find创建线的解决scheme。

当按住手指并且玩家在“天花板对象”的范围内时,我创建一个LineRenderer ,创建一个“空单元对象”的空对象子元素 ,并将Linerenderer附加到空元素。&为了使用Vector3.distance计算距离

 public GameObject StarObj,EndObj; private LineRenderer lineRenderer; private HingeJoint2D hingJoint; // Use this for initialization void Start () { lineRenderer = GetComponent<LineRenderer> (); hingJoint = GetComponent<HingeJoint2D> (); } // Update is called once per frame void Update () { if (Vector3.Distance (transform.position, StarObj.transform.position) <= 8f) { lineRenderer.enabled = true; lineRenderer.SetPosition (0, StarObj.transform.position); lineRenderer.SetPosition (1, EndObj.transform.position); if (DemoLongPress.instance.jointTrue) { hingJoint = EndObj.GetComponent<HingeJoint2D> (); hingJoint.connectedBody = StarObj.GetComponent<Rigidbody2D> (); hingJoint.connectedAnchor = new Vector2 (0, 1f); hingJoint.anchor.Set (0, 1); } } else { lineRenderer.enabled = false; } } 

当玩家握住手指玩家可以使用HingJoint2D粘住LineRenderer当玩家进入距离以创建玩家与“天花板对象”之间的连线并且当玩家握住手指时,则连接玩家与“天花板对象”之间的连接并且玩家坚持线。 如果玩家释放他的手指,则删除线路游戏对象。 如果有任何更正或错误,然后告诉我,我纠正它…其余的应该是行渲染器组件的configuration,以匹配线的外观,如你所愿。 谢谢