[Unity] 슈퍼마리오 게임 만들기[8]
수정사항
-
캐릭터의 기본상태 애니메이션이 부자연스러워서 가만히 있도록 수정했습니다.
-
캐릭터의 점프모션을 바꿔주었습니다.
-
점프 후 몬스터를 밟고난 뒤의 애니메이션을 추가할 예정입니다.
아이템 및 결승점
먼저, 코인을 추가해서 점수를 매기는것을 구현해보겠습니다.
게임에 코인을 추가해서 애니메이션을 만들어주고, Circle Collider2D를 붙여주었습니다.
그리고, IsTrigger를 체크해줍니다. (Tag : Item)
같은 방식으로 코인 종류 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 스크립트를 넣어줍니다.
PlayerControl 스크립트에서 GameManager를 찾을필요가 있습니다.
전역변수로 다음을 추가하여줍니다.
public GameManager gameManager;
그다음, Hierarchy 뷰의 Player를 선택하여 Game Manager 란에 GameManager 오브젝트를 끌어다 놓습니다.
점수 매기기 및 스테이지 변경
- 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();
}
}
-
코인의 종류에따라 점수를 차등획득하도록 했고, 몬스터를 죽였을 때 점수를 얻도록 했습니다.
-
결승점에 닿으면 스테이지가 넘어가도록 할 예정입니다.
댓글남기기