본문 바로가기
유니티강좌

간단한 2D 미로찾기 게임 만들기 / 아이템 획득(먹기)시 효과음 / 엔딩시 텍스트 출력 - (Maze Game Make - OnTriggerEnter2D, SetActive)

by Ncube 2020. 12. 16.

 

 

눈사람을 이동시켜 아이템(눈결정)을 획득하며 미로를 찾아 피니쉬 지점까지 가는 간단한 2D 미로찾기 게임을 만들어 봤습니다. 게임 제작시 아이템 먹기(OnTriggerEnter2D), 아이템 획득시 효과음 나게 하는 방법(AudioSource, AudioClip), 피니시 존에 닿았을때 엔딩 텍스트 출력하는 방법(SetActive)들을 알아 봅니다.[더보기]

 

#미로찾기게임만들기  #아이템획득시효과음  #엔딩텍스트출력

 

 

영상에 사용된 효과음 : https://freesound.org/

 

 

[Move.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    float moveX, moveY;
    public float speed = 5.0f;
    Rigidbody2D rb;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        moveX = Input.GetAxis("Horizontal");
        moveY = Input.GetAxis("Vertical");
    }

    private void FixedUpdate()
    {
        rb.velocity = new Vector2(moveX * speed, moveY * speed);
    }
}

 

 

[GetItem.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GetItem : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        Destroy(gameObject);
        ItemSound.GetItemSound();
    }
}

 

 

 

[ItemSound.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemSound : MonoBehaviour
{
    static AudioSource audioSource;
    public static AudioClip audioClip1, audioClip2;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        audioClip1 = Resources.Load<AudioClip>("Item1");
        audioClip2 = Resources.Load<AudioClip>("Nice1");
    }

    public static void GetItemSound()
    {
        audioSource.PlayOneShot(audioClip1);
    }

    public static void FinishSound()
    {
        audioSource.PlayOneShot(audioClip2);
    }

}

 

 

[Finish.cs]

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Finish : MonoBehaviour
{
    [SerializeField] Text finText;

    void Start()
    {
        finText.gameObject.SetActive(false);
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        finText.gameObject.SetActive(true);
        ItemSound.FinishSound();
    }
}

 

댓글