Unity3d 如何限制和钳制直线渲染器unity2d中两点之间的距离

Unity3d 如何限制和钳制直线渲染器unity2d中两点之间的距离,unity3d,limit,draw,distance,clamp,Unity3d,Limit,Draw,Distance,Clamp,我正在做一个游戏,让你点击一个球并拖动来画一个带有两个点的线渲染器,并将其指向一个特定的方向,当释放时,我会给球添加力, 现在,我只想知道如何限制这两点之间的距离,比如给它一个半径 我已经编写了以下伪代码,这可能会对您有所帮助 float rang ; Bool drag=true; GameObject ball; OnMouseDrag () { if(drag) { //Put your dragging code here } if (ball.transform.posi

我正在做一个游戏,让你点击一个球并拖动来画一个带有两个点的线渲染器,并将其指向一个特定的方向,当释放时,我会给球添加力, 现在,我只想知道如何限制这两点之间的距离,比如给它一个半径


我已经编写了以下伪代码,这可能会对您有所帮助

float rang ;

Bool drag=true; 
GameObject ball;

OnMouseDrag () { 
if(drag) { 
//Put your dragging code here

}

if (ball.transform.position>range)
     Drag=false;
else Drage=true;

}

你可以简单地用夹子夹住它

由于您没有提供任何示例代码,不幸的是,这里有一些示例代码是我用一个简单的带有网格碰撞器的平面、一个带有LineRenderer的子对象和一个设置为正交的摄影机编写的。你可能不得不以某种方式接受它

公共课示例:单一行为 { //在检查员中进行调整 公共浮点数maxRadius=2; 专用矢量3起始位置; [SerializeField]专用行渲染器行; [字段]专用对撞机对撞机; [现场]私人摄像机; 私人空间觉醒 { line.positionCount=0; line=getComponentChildren; collider=GetComponent; camera=camera.main; } //无论你从哪里开始拖动 私人房屋空置 { line.positionCount=2; startPosition=collider.ClosestPointcamera.ScreentToWorldPointNewVector3Input.mousePosition.x,Input.mousePosition.y,transform.position.z; var positions=new[]{startPosition,startPosition}; line.setpositions位置; } //拖动时 私人空间 { var currentPosition=GetComponent.ClosestPointcamera.screentoworldpointnewvector3input.mousePosition.x,Input.mousePosition.y,transform.position.z; //获取位置之间的向量 var差=当前位置-起始位置; //规格化以仅获取幅值为1的方向 var方向=差异。归一化; //在这里,您可以使用其中较小的一个 //差分向量的最大半径或大小 var距离=Mathf.MinmaxRadius,差分.magnitude; //最后应用结束位置 var endPosition=起始位置+方向*距离; line.SetPosition1,endPosition; } } 这就是它的样子


您可以发布到目前为止您已经实现了什么吗?这样做您将无法在达到一次限制后将端点移动到其他任何地方。如果你想在达到极限后将其向后移动或改变方向,该怎么办?