C# 如何避免在unity中镜像画布

C# 如何避免在unity中镜像画布,c#,unity3d,camera,2d,C#,Unity3d,Camera,2d,我想将我的healthbar和manabar附加到播放器上,但我不知道如何将其附加到没有镜像的播放器上(每当播放器模型翻转时,整个画布都会翻转) 以下是视频: 以下是项目:在CharacterController2D中,有一个Flip()方法可以翻转transform.localScale.x符号。看看这个变换是什么。在本例中,条形图是您翻转的根对象的子对象。因此,它翻转character_nomove.transform.x及其所有子项。您可能不想将这些栏及其画布置于角色变换下。我也不认为它们

我想将我的healthbar和manabar附加到播放器上,但我不知道如何将其附加到没有镜像的播放器上(每当播放器模型翻转时,整个画布都会翻转)

以下是视频:


以下是项目:

在CharacterController2D中,有一个Flip()方法可以翻转transform.localScale.x符号。看看这个变换是什么。在本例中,条形图是您翻转的根对象的子对象。因此,它翻转character_nomove.transform.x及其所有子项。您可能不想将这些栏及其画布置于角色变换下。我也不认为它们有任何理由出现在世界空间。我想屏幕空间覆盖在这里就足够了。

您可以做的是取消条形图的父级,然后使用类似于:

healthbar.transform.position = yourCharacter.transfomr.position + new vector2(0 , 1);
healthbar.transform.position = Camera.Main.WorldToScreenPoint(yourCharacter.transfomr.position + new vector2(0 , 1));
Update
方法中,沿字符移动它,并稍微向上移动。 请注意,如果您的角色是2D sprite,且条形图位于画布中,则必须使用类似以下内容:

healthbar.transform.position = yourCharacter.transfomr.position + new vector2(0 , 1);
healthbar.transform.position = Camera.Main.WorldToScreenPoint(yourCharacter.transfomr.position + new vector2(0 , 1));
从放置在世界中的角色获取屏幕位置(画布)