使用Sprite Renderer实现X轴翻转所引发的问题

发布时间 2023-12-26 15:48:29作者: 心霖の雨

在人物Move()方法中使用了Sprite Renderer组件,对人物进行了X轴翻转。但是,在后面进行攻击判定开发的时候,发现判定区域并不会进行翻转

Move()方法内Sprite Renderer的翻转代码

// 人物翻转()
if (xDirection > 0)
{
    spriteRenderer.flipX = false;
}
else if (xDirection < 0)
{
    spriteRenderer.flipX = true;
}

对人物进行翻转时,能够发现人物攻击的判定区域并没有翻转
image

image

攻击判定区域的绘制是在人物Player的子集中
image

但是对Player进行翻转,并没有得到想象中的效果

不过发现对人物进行Transform的Scale翻转,能够使攻击判定区域也进行翻转

将Transform Scale的X轴调整为-1
image

能够发现,攻击判定区域也随时发生翻转
image

伪代码如下

int faceDir = (int)transform.localScale.x;
if (inputDirection.x > 0)
{
    faceDir = 1;
}
else if (inputDirection.x < 0)
{
    faceDir = -1;
}
// 人物翻转
transform.localScale = new Vector3(faceDir, 1, 1);

至于为什么会有这样的差别,本人暂时也不清楚,后续再对其进行更深入的研究