关于canvas修改模式

需要在ui上播放特效需将canvas修改为camera而不能用overlay,因为特效播放在模型层。但是一旦修改canvas为camera模式,就会出现ui适配的问题。比如血条需要依照canvas scaler进行适配。

普通的方式:

public override void UpdatePosition()
    {
        Vector2 player2DPosition = cm.WorldToScreenPoint(target.transform.position);
        rect.localPosition = new Vector2(xOffset, yOffset) - new Vector2(UIWidth / 2, UIHeight / 2) + player2DPosition;
    }


如上的方式在这种模式下是不对的。

应该修改为如下

       float xxx= player2DPosition.x / Screen.width;///750
        float yyy = player2DPosition.y/ Screen.height;
        float zzz = Screen.height*1.0f/Screen.width;
    recTransform.localPosition =   new Vector2(xOffset, y) - new Vector2(1334 / 2, 1334 * zzz / 2)+ new Vector2(1334 *xxx, 1334 *yyy * zzz);

其中1334是canvas scaler的宽度



记住这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值