ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 11일차 고양이 나타내기
    개발일지/스파르타 코딩클럽 유니티 강의 2024. 4. 2. 15:59

    오늘 배운 내용

    • 고양이 만들기
    • 고양이에 애니메이션 붙이기
    • 뚱뚱한 고양이 만들기
    • 프리팹화 하기
    • 고양이 내려오게 하기
    • 고양이와 밥 충돌하게 하기
    • 충돌하면 에너지 채워주기
    • 에너지가 차면 퇴장하게 하기
    • 특정 y좌표 밑으로 내려가면 게임 종료

    새로 알게 된 내용

    HP바 를 만들때 다른 색의 바 두개를 겹쳐서 만들기

    캔버스로 back과 front 바 두개를 만들어서 구현했다

    이는 예상했던 방법이지만 실제로 해본 것은 처음이다

     

    Canvas에서 RenderMode를 World Space로 변경 해주기

    원래 기본값은 ScreenSpace인데 World Space로 변경해주면

    쉽게 말하면 캔버스 전용 화면에서 게임 화면으로 온거라고 보면 된다

     

    rigidbody의 Body Type을 Kinematic으로 할 때는 isTrigger 체크해주기

    예전에도 isTrigger는 줄곧 사용했었는데 보통 부딪히는게 아닌 통과하는 충돌일 때

    항상 사용했다. Kinematic을 사용할 때는 체크해주어야 충돌감지가 된다는 건 몰랐다

     

    상대 오브젝트 파괴하기

    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "food")
        {
            energy += 1.0f;
            Destroy(coll.gameObject);
        }
    }

     

    ***하위 파일들을 찾아서 값 조절하기***

    void OnTriggerEnter2D(Collider2D coll)
    {
        if (coll.gameObject.tag == "food")
        {
            if (energy < full)
    				{
    						energy += 1.0f;
    		        Destroy(coll.gameObject);
    						gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);
    				}
            else
            {
                Debug.Log("배가 다 찼어요");
            }
        }
    }

    gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);

     

    Destroy 함수도 시간차가 가능하다

    Destroy(gameObject, 3.0f);

     

    오늘 발생한 문제

     

    중요하게 생각하는 부분

    에너지 꽉 차면 옆으로 비키게 하기

    void Update()
    {
        if (energy < full)
        {
            transform.position += new Vector3(0.0f, -0.05f, 0.0f);
        }
        else
        {
            if (transform.position.x > 0)
            {
                transform.position += new Vector3(0.05f, 0.0f, 0.0f);
            }
            else
            {
                transform.position += new Vector3(-0.05f, 0.0f, 0.0f);
            }
        }
    }

    x좌표에 따라서 오른쪽에 있으면 오른쪽으로 사라지게 하고

    왼쪽에 있으면 왼쪽으로 사라지게 하는 코드인데 배울 점이라고 생각

     

    하위 오브젝트 찾는 법*******

    void OnTriggerEnter2D(Collider2D coll)
    {
       if (coll.gameObject.tag == "food")
       {
         if (energy < full)
    	{
    		energy += 1.0f;
    		Destroy(coll.gameObject);
    		gameObject.transform.Find("hungry/Canvas/front").transform.localScale = new Vector3(energy / full, 1.0f, 1.0f);
    	}
        else
        {
    		gameObject.transform.Find("hungry").gameObject.SetActive(false);
            gameObject.transform.Find("full").gameObject.SetActive(true);
        }
      }
    }

    게이지가 모두 차면 hungry는 사라지게, full은 보이게 하기

Designed by Tistory.