본문 바로가기

카테고리 없음

unity 2d pivot

private Vector2 Getpivot(Texture2D tex, int x, int y, int width, int height)
{
    Color[] pixels = tex.GetPixels(
        (int)x,
        (int)y,
        (int)width,
        (int)height
    );
    // 스프라이트의 첫 번째 비투명 픽셀 찾기 (아래부터 위로)
    int firstNonTransparentY = -1;
    for (int row = 0; row < height; row++)
    {
        for (int col = 0; col < width; col++)
        {
            Color32 pixel = pixels[row * width + col];
            if (pixel.a > 0) // 알파 값이 0보다 큰 경우
            {
                firstNonTransparentY = row;
                break;
            }
        }
        if (firstNonTransparentY != -1)
            break;
    }

    if (firstNonTransparentY == -1)
    {
        return Vector2.zero;
    }

    // 피벗 Y 계산 (0: Bottom, 1: Top)
    float pivotY = (float)firstNonTransparentY / (float)(height - 1);

    // 피벗 설정
    return new Vector2(0.5f, pivotY); // X는 중앙 (0.5)
}

아래부터 시작해서 투명 아닌부분의 vector2 구하기 캐릭터, 몬스터 발바닥을 피벗으로 설정할 수 있음