STIKA

TIL[53]✏️ 본문

프로그래밍/Unity + C#

TIL[53]✏️

STIKA 2024. 3. 26. 08:26

24.03.26 Tue

 

 

❤️ TIL [50]

Today I Learned


✏️ 작업 내용

✔️ 

✔️ 


✔️ 두둥

픽셀퍼펙트카메라

타일맵 룰타일로 애니메이션도 만들수있음

 

솔팅레이어 default 위쪽에 레이어 추가하면 밑에 무조건적으로 깔린다

MathF.RoundToInt = 반올림

LayerSetting만듬 일단은 스크립트를 따로빼뒀는데

나중에 게임매니저같은곳에 넣어서 다른 오브젝트들이 다 써도될듯하기도하고

아님 레이어 셋팅을 아예 오브젝트에 다 넣어서 사용해도 될꺼같고

LayerSetting이 내가 작물 레이어조절할떄 만든거랑 똑같음

셀포지션으로 하면될꺼같았는데 셀포지션으로 하니까 오브젝트가 겹치는일이 생기고 이상해서 바꿈

그냥 반올림써야겠음

그러네 셀은 0~1 은 1로 취급되겠구나ㅇㅋ

0.4는 0이되야되는데

그래서 플레이어꺼는 플레이어무브먼트에 달았음

일단 작물레이어는 타일매니저에 있는데 이게 살짝 작물오브젝트마다 앵커가 다르기는 한데 어차피 셀안에 생기는거니까

만약레이어 문제생기면 셀포지션말고 그냥 위치로 보면될듯

나무위아래로할때는 나무기둥만큼만 콜리더

캐릭터도 몸통으로바꿈 다시 다리로바꿈

셀로해도 오브젝트레이어가 겹치면 깜박이거나 순서가 이상해짐

기둥콜리더크기줄임

예에에해결함 그냥mathf안쓰고

기본 포지션y값에100곱해서 소숫점 두자리까지 만들고 거기에 최소200 붙이면 소숫점단위까지가 적용되서 세밀한 오브젝트 레이어 차이가 만들어짐

objectSR.sortingOrder = (int)(transform.position.y * 100 * -1) + 200;

어차피 솔팅레이어에 floor를 달꺼라면 필요없음 200더하는게 필요없음

        _spriteRenderer.sortingOrder = (int)(transform.position.y * 10 * -1);

로바꿈

 

 

작물솔팅도 처음에 레이어를 Seed로 놨다가 성장하는 순간 default로 바꿈

작물도 원래는 target으로 셀포인트를 받아왔었는데 걔로하니까 안댐 실제 위치랑 다르게 셀포지션으로 잡힘

        cropRenderer.sortingOrder = (int)(cropObj.transform.position.y * 10 * -1);
        cropRenderer.sortingLayerName = "Seed";

로 완성 이제 target을 받아올필요가 없어져서 init 에 포함시켜버림

 

sorting Layers에 seed를만들었더니 갑자기 랜더링?이 안되고 이미지가 없는거마냥 까맣게나옴

찾아보니 랜더링이안된거고 글로벌 조명관련이였음

urp로 만들면 스프라이트의 머테리얼이 조명의 효과를 받는 걸로 기본설정이 되고

sprite default로 만들면 조명효과를 안받음 = 아까처럼꺼매지는 못받음x 안받음O

 

 

여기에 Seed가 없어서 그랬음

모든 조명에 Seed를 달아주니 everything으로 바뀌면서 정상적으로 출력됨

한마디로 조명을 받겠다고 했는데 조명이 비춰주는대상에 포함이 안되있던것

그래서 아까 그 검은상태에서 material을 바꿔주면 또 표시댐

 

 

 

 

일단은 뒤에가면 가려지기

스프라이트 에디터의 커스텀피직스쉐이프 에서 오브젝트 클릭하고 제너레이트를 하면 하얀색 점들이 생기는데

뭔지는 모르겠는데 이거하고 폴리곤 콜리더 넣으면 그 모양대로생김

나무콜리더 모양도바꿈 천천히 바뀌게해야할듯

플레이어 아웃라인도 줄수있대

조건문도달아야할듯 레이어가 작다면?

작물에도 달았음

 

 

씬매니저 FadeFlow

time += Time.deltaTime / fadeTime;//Time.deltaTime * ? 는 1초동안 ?도달 / delta / ? 는 ? 동안 1이 도달

MathF Lerp는 부드럽게 만들기 위해서 0,1,x

비율을구할곳0~1사이, x까지의 비율

 

public class ObjectLayerSetting : MonoBehaviour
{
    private SpriteRenderer sr;

    private float time;
    private float fadeTime = 1f;


    private void Start()
    {
        sr = GetComponent<SpriteRenderer>();
        sr.sortingOrder = (Mathf.RoundToInt(transform.position.y) * -1) + 200;
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            StopCoroutine("PlusAlpha");
            MinusAlphaStart();
        }
    }

    private void OnTriggerExit2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            StopCoroutine("MinusAlpha");
            PlusAlphaStart();
        }
    }
    
    public void MinusAlphaStart()
    {
        StartCoroutine("MinusAlpha");
    }

    public void PlusAlphaStart()
    {
        StartCoroutine("PlusAlpha");
    }

    public IEnumerator MinusAlpha()
    {       
        Color alpha = sr.color;
        time = 0f;

        while (alpha.a > 0.5f)
        {
            time += Time.deltaTime / fadeTime;
            alpha.a = Mathf.Lerp(alpha.a, 0.5f, time);//지금 현재 상태부터 0.5까지 / 이렇게 안하면 1~0.5 전에 나가면 갑자기 0.5부터 시작해서 깜빡이는 느낌이 듬
            sr.color = alpha;
            yield return null;
        }
    }

    public IEnumerator PlusAlpha()
    {
        Color alpha = sr.color;
        time = 0f;

        while (alpha.a < 1f)
        {
            time += Time.deltaTime / fadeTime;
            alpha.a = Mathf.Lerp(alpha.a, 1, time);
            sr.color = alpha;
            yield return null;
        }
    }
}

 

에 조건문 추가

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player") 
        && other.GetComponent<SpriteRenderer>().sortingOrder < objectSR.sortingOrder)
        {
            StopCoroutine("PlusAlpha");
            MinusAlphaStart();
        }
    }

📝 오늘의 마무리

 


 

✏️ 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기

✏️ TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기

✏️ 꾸준히 기록을 남기는 습관 가지기

 

 

C#TILUnity게임개발내일배움캠프

'프로그래밍 > Unity + C#' 카테고리의 다른 글

TIL[55]✏️  (0) 2024.03.28
TIL[54]✏️  (0) 2024.03.27
TIL [52]✏️  (0) 2024.03.25
TIL[51]✏️  (0) 2024.03.23
TIL[50]✏️  (0) 2024.03.22