본문 바로가기
유니티

17

by 찡사랑방 2023. 4. 12.
728x90
728x90

2D 게임 만들기

 

1.거대 몬스터 게임시작시 지속적으로 플레이어를 쫒아오고 부딪히면 일정시간 플레이어의 속도가 느려지도록 한다 

  부딪힌 거대 몬스터는 파괴시키도록 하고 느려진다는 경고문을 띄우도록 한다.

 

몬스터가 따라오는건 이미 전에 적었을거라 제외하고 나머지 코드 ↓

 void Update()
    {
        TargetMove();
        if (IsTarget)
        {
            MonsterCollision();
        }
        else
        { 
           //몬스터 경고문
        }
    }

    //플레이어의 이동 속도를 일정시간동안 늦추는 함수
    private void MonsterCollision()
    {
        TargetCount -= Time.deltaTime;
        TargetPlayer.GetComponent<PlayerMove>().speed = 0.5f;

        if (TargetCount <= 0)
        {
            TargetPlayer.GetComponent<PlayerMove>().speed = 10f;
            Warning_Text.text = "";
            Destroy(this.gameObject);
        }

    }
    private void OnTriggerEnter2D(Collider2D collision)
    {
        //플레이어와 부딪혔을때 일정시간동안 플레이어의 속도를 늦춘다 
        //부딪히는 오브젝트가 TargetPlayer와 같으면 = collison.gameobject.tag=="Player"
        if (collision.gameObject == TargetPlayer)
        {
            Warning_Text.text = "플레이어의 이동속도가 느려졌습니다!";

            if (TargetCount >= 20)
            {
                IsTarget = true;
            }

        }

    }

(그러나 시간제한도 뒀는데 뒤에서 몬스터가 쫒아오는건 그림이 별로라 삭제했다 ㅎ 언젠간 쓸일이 있겠지하고 백업하는 중)

 

2. ESC 키 누르면 게임 일시정지후 계속하기 다시하기 종료하기 옵션패널 띄우기

 

public class Gamemanager : MonoBehaviour
{   public static bool IsPause = false;
    
    public GameObject GameStop_Panel;
    
}   
private void Start()
    {
        GameStop_Panel.SetActive(false);
       
    }
    
     private void GamePause()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            GameStop_Panel.SetActive(true);
            IsPause = true;
            Time.timeScale = 0f; //일시정지
            return;
        }
    }
     public void GameStart()
    {
        IsPause = false;
        Time.timeScale = 1f;
        GameStop_Panel.SetActive(false);
    }

    public void GameQuit()
    {
        Application.Quit();
    }
    private void Update()
    {
        GamePause();
    }

 

3.Intro 화면을 만들어 게임시작전 서사부여

   왕이 자신들을 위해 싸워달라는 대화문을 왕과 부딪혔을때(사실 트리거) 팝업되고 사라지게 만들기

 

여기까진 어케 했는데 패널이 사라지질 않는다... input Keydown 도 안먹혀.. 왜이럴까..ㅜ

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



//플레이어와 거리가 가까워지면 간단한 대화창을 띄운다

public class Talk : MonoBehaviour
{

    private GameObject PlayerObject;
    public GameObject talk_Panel;


    void Start()
    {

        talk_Panel.SetActive(false);
        PlayerObject = GameObject.Find("Player");

    }

    // Update is called once per frame
    void Update()
    {

    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject == PlayerObject)
        {
            talk_Panel.SetActive(true);
        }


        if (Input.GetKeyDown(KeyCode.Space))
        {
            talk_Panel.SetActive(false);

        }

    }
}

4.효과음 넣기

 1) 공격 받았을 때

 2) 공격 할때

 3) 점프 할때

 4) 아이템 먹을때

 

 

728x90

'유니티' 카테고리의 다른 글

18  (0) 2023.04.13
16  (0) 2023.04.11
16  (0) 2023.04.11
15  (0) 2023.04.10
14  (0) 2023.04.07