0

我有一个用于高光和轮廓的着色器,它工作得很好,除了一种小但非常烦人的方式:

https://i.stack.imgur.com/vfsNx.png

https://i.stack.imgur.com/N3mG6.png

我的精灵被划分为“玩家”、“头发”、“服装”和“武器”的独立游戏对象,它们都是可交换和动画的。轮廓/填充材质也在其自己的 Gameobject 上,着色器使用“玩家”Sprite Renderer 作为其 _mainTex 并将 Sprite 设置在其自己的 Sprite Renderer 上。

着色器当前使用“头发”(以及最终的“装备”和“武器”)Sprite Renderer 纹理作为着色器图中名为 _Hair 的辅助纹理,以创建头发和身体的复合高亮/轮廓图像。

它工作得很好......除了顶线,而且总是恰好顶线的像素被切断。

我知道这不是精灵表或任何导入设置问题,因为其他着色器在各个部分上工作正常,而且我没有使用精灵图集或任何东西。我认为这一定是我设置着色器图的方式有问题......

https://i.stack.imgur.com/5LZHZ.png

...我从“头发”精灵渲染器访问纹理的方式或我设置纹理的方式:

public class PlayerOutline : EntityOutline
{ 
public SpriteRenderer outlineRend;

public SpriteRenderer hairRend;

public override void SetSprite()
{
    if (hairRend.sprite)
    {
        outlineRend.material.SetTexture("_Hair",hairRend.sprite.texture);
    }

    base.SetSprite();
}

}

我已经坚持了两天,所以我非常感谢任何想法,而且我仍然是着色器的初学者;我以前没有将它们用于这样的事情。这也是一个相当困难的标题问题,因此也欢迎任何关于更好标题的建议!

4

1 回答 1

0

好的,所以我发现着色器不能应用于主纹理边界之外的辅助纹理。在我的精灵表导入设置中将网格类型从“紧密”更改为“完全矩形”解决了我的问题,尽管我可以预见到需要物理调整精灵大小才能使其工作的情况。感谢本感兴趣!

于 2021-02-21T11:00:55.470 回答