1 분 소요

수정사항

  • 캐릭터의 기본상태 애니메이션이 부자연스러워서 가만히 있도록 수정했습니다.

  • 캐릭터의 점프모션을 바꿔주었습니다.

  • 점프 후 몬스터를 밟고난 뒤의 애니메이션을 추가할 예정입니다.

image

아이템 및 결승점

먼저, 코인을 추가해서 점수를 매기는것을 구현해보겠습니다.

게임에 코인을 추가해서 애니메이션을 만들어주고, Circle Collider2D를 붙여주었습니다.

그리고, IsTrigger를 체크해줍니다. (Tag : Item)

image

같은 방식으로 코인 종류 3가지[Gold, Silver, Bronze]를 추가합니다.

그리고, 게임이 끝이나려면 결승점이 있어야겠죠.

깃발을 하나 추가해줍니다. (Tag : Finish)

PlayerControl.cs [충돌이벤트 추가]

다음 코드를 추가해줍니다.

// 충돌이벤트
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject.tag == "Item")
        {
            //Get Point

            //Destroy Item
            collision.gameObject.SetActive(false);
        }
        else if(collision.gameObject.tag == "Finish")
        {
            // Go Next Stage

        }
    }

게임 매니저 추가

점수와 스테이지 관리를 위해서 게임 매니저를 하나 추가하겠습니다.

  • Hierarchy 뷰에 CreateEmpty - GameManager 라는 이름으로 오브젝트를 하나 추가합니다.

  • Scripts 폴더에 GameManager 라는 이름으로 스크립트를 하나 추가해줍니다.

  • GameManager 오브젝트에 GameManager 스크립트를 넣어줍니다.

image

PlayerControl 스크립트에서 GameManager를 찾을필요가 있습니다.

전역변수로 다음을 추가하여줍니다.

public GameManager gameManager;

그다음, Hierarchy 뷰의 Player를 선택하여 Game Manager 란에 GameManager 오브젝트를 끌어다 놓습니다.

image

점수 매기기 및 스테이지 변경

  • GameManager.cs에 점수와 스테이지를 관리할 변수를 추가합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour
{
    public int totalPoint;      //총점수
    public int stageNumber;     //스테이지 번호

    void Start()
    {
        
    }

    void Update()
    {
        
    }

    //다음 스테이지
    public void NextStage()
    {
        stageNumber++;
    }
}

  • PlayerControl.cs에 점수처리를 위한 코드를 작성합니다.
//몬스터 밟기
    void Attack(Transform monster)
    {
        //Get Point
        gameManager.totalPoint += 500;

        //캐릭터 반동효과 
        rigid.AddForce(Vector2.up * 10, ForceMode2D.Impulse);

        //몬스터의 스크립트를 참조
        MonsterController monsterMove = monster.GetComponent<MonsterController>();
        monsterMove.OnDamaged();
    }

// 충돌 이벤트
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.gameObject.tag == "Item")
        {
            //Get Point(Bronze Silver Gold)
            bool isBreonze = collision.gameObject.name.Contains("Bronze");
            bool isSilver = collision.gameObject.name.Contains("Silver");
            bool isGold = collision.gameObject.name.Contains("Gold");

            if(isBreonze)
                gameManager.totalPoint += 100;
            else if(isSilver)
                gameManager.totalPoint += 200;
            else if(isGold)
                gameManager.totalPoint += 300;

            //Destroy Item
            collision.gameObject.SetActive(false);
        }
        else if(collision.gameObject.tag == "Finish")
        {
            // Go Next Stage
            gameManager.NextStage();
        }
    }
  • 코인의 종류에따라 점수를 차등획득하도록 했고, 몬스터를 죽였을 때 점수를 얻도록 했습니다.

  • 결승점에 닿으면 스테이지가 넘어가도록 할 예정입니다.

댓글남기기