[Unity Project] <ShootOut2D> 2D 슈팅 게임 만들기(7) 젬 생성

2023. 8. 31. 16:54Unity

728x90
반응형

적을 쏘아 격추시키면서 점수를 높이기 위해 젬을 배치하는 것은 플레이어의 경험을 향상 시키는 데에 효과적이다.

 

 

위와 같은 젬 스프라이트를 적용할 것이다. 설정한 후 Sprite Editor로 잘라서 한꺼번에 드래그하여 애니메이션을 만든다.

 

 

애니메이션을 적당히 편집하면 반짝이는 젬을 만들 수 있다. 이전에 해왔던 과정과 같은 방법이다.

 

 

Item 레이어를 추가한 후 적용한다.

 

 

Player와 Item 레이어의 충돌 체크도 한다.

 

 

Circle Collider 2D와 Rigidbody 2D를 추가한다. Kinematic 설정을 한다.

 

 


 

 

소행성 파괴시 젬 생성

ShootScript에서 소행성이 파괴될 때 그 자리에 코인을 생성하는 코드를 추가할 것이다.

 

 

public class ShootScript : MonoBehaviour
{
    public GameObject gem;
    public GameObject hitEffect;
    public float speed = 10;

    void Update()
    {
        transform.position += Vector3.right * Time.deltaTime * speed;
    }
    void OnBecameInvisible()
    {
        Destroy(gameObject);
    }

    void OnTriggerEnter2D(Collider2D collision)
    {
        print(collision.tag);
        if(collision.tag == "Asteroid")
        {
            AsteroidScript asteroidScript = collision.gameObject.GetComponent<AsteroidScript>();
            asteroidScript.hp -= 3;
            Instantiate(hitEffect, transform.position, Quaternion.identity);
            if(asteroidScript.hp <= 0 )
            {
                Vector3 randomPosGem = new Vector3(Random.Range(-0.1f, 0.1f), Random.Range(-0.1f, 0.1f), 0);
                Instantiate(gem, transform.position + randomPosGem, Quaternion.identity);
                Destroy(collision.gameObject);
            }
            Destroy(gameObject);
        }
    }
}

public GameObject로 gem 프리팹을 넣고, 소행성의 체력이 10 이하가 되어 파괴될 때, Instantiate으로 gem 프리팹을 불러온다. 이때, 약간의 랜덤 값으로 위치를 조정할 수 있다.

728x90
반응형