首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >圆环上的点/极限阻力指示器

圆环上的点/极限阻力指示器
EN

Stack Overflow用户
提问于 2020-10-27 06:48:45
回答 1查看 26关注 0票数 0

我有一个统一的项目,我正在做一个拖动指示器(下面)

有人能告诉我如何限制这个指示器的长度吗?

我用下面的代码创建它

代码语言:javascript
运行
复制
if (Input.GetMouseButtonDown(0))
            {
                if (lr == null)
                {
                    lr = gameObject.AddComponent<LineRenderer>();
                }
                lr.enabled = true;
                lr.positionCount = 2;
                startPos = camera.ScreenToWorldPoint(Input.mousePosition) + camOffset;
                lr.SetPosition(0, startPos);
                lr.useWorldSpace = true;
                lr.widthCurve = ac;
                lr.numCapVertices = 10;
                lr.sortingLayerName = "Top";
                lr.startColor = Color.white;
                lr.endColor = Color.white;
            }
            if (Input.GetMouseButton(0))
            {
                endPos = camera.ScreenToWorldPoint(Input.mousePosition) + camOffset;
                lr.SetPosition(1, endPos);

            }
            if (Input.GetMouseButtonUp(0))
            {
                lr.enabled = false;
                attached = false;
            }

我试过像这样限制长度

代码语言:javascript
运行
复制
Vector3 length = startPos - endPos;
if(length.magnitude <= 7) lr.SetPosition(1, endPos);

但是当我超过7的长度后,它就没有endPos更新了。

知道如何在更新endPos的同时达到这个限制吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-27 06:59:15

代码语言:javascript
运行
复制
Vector3 direction = endPos - startPos;
float length = direction.magnitude;
if(length > 7) 
    endPos = startPos + direction / length * 7;
lr.SetPosition(1, endPos);

注意:我使用的是direction / length而不是direction.normalized,以避免昂贵的重复计算direction.magnitude

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64549431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档