需要在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的宽度
记住这个问题。