首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >敌人头上的统一生命栏

敌人头上的统一生命栏
EN

Stack Overflow用户
提问于 2018-05-25 06:50:05
回答 1查看 3.4K关注 0票数 0

我有一些问题,所以我想我应该在这里问。

我编写了一个代码来实例化一个健康条(一个简单的滑块)和一个敌人。然后,它将敌人(刚刚产生的)设置为该生命栏的目标,并且健康栏更新其位置,使其始终保持在敌人的头部之上。

这是健康栏的脚本(canvasRect是画布的rect转换,myRect是健康条的正向转换):

代码语言:javascript
复制
private void Update() {
        if(target != null) {
            Vector2 targetPosition = Camera.main.WorldToViewportPoint(target.position);

            Vector2 screenPosition = new Vector2(((targetPosition.x * canvasRect.sizeDelta.x) - (canvasRect.sizeDelta.x * 0.5f)),
                ((targetPosition.y * canvasRect.sizeDelta.y) - (canvasRect.sizeDelta.y * 0.5f)));

            screenPosition += new Vector2(0f, 15f);

            myRect.anchoredPosition = screenPosition;
        }
    }

这个脚本很好用,但是有一个问题:正如您所看到的,我在y坐标中添加了一个偏移量。这是把生命栏放在的敌人之上,而不是把放在的内部。

然而,当我移动相机时,问题就来了。如果我放大,它旋转一点(像RTS相机),这意味着偏移是错误的。我放大的越远,健康栏就会越低(因为15华氏度的偏移量已经不够了)。然后,当我把相机移近敌人时,它又一次把健康棒推到敌人身上。

有没有办法让我的敌人在屏幕大小的“边界”,这样我总是可以知道有什么偏移?还是有别的解决办法?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-25 08:29:21

解决办法很简单。不要将偏移量添加到屏幕位置。相反,将其添加到敌人的世界位置(target.position +偏移)。

此外,您还可以使用MeshRenderer.bounds获得网格的边界。

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

https://stackoverflow.com/questions/50523101

复制
相关文章

相似问题

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