728x90
전 글에 이어서 하겠습니다.
다음은 모든 장애물을 제거할수있는 레드 코인을 만들어 줍시다.
모든 장애물을 없애기위해서 이게 장애물이다~ 하는 표시가 필요합니다
그걸 위해 모든 장애물의 속성 창에서 이름 바로 밑에 있는 Tag >> add tag >> 새로 Obstacle 을 추가해주고
모든 장애물의 태그를 변경 해줍시다.
그러고 나서 게임 메니저파일에 아래처럼 추가해줍시다.
void RedCoinStart()
{
DestroyObstacles();
}
void DestroyObstacles()// 모든 장애물 파괴 함수
{
GameObject[] obstacle = GameObject.FindGameObjectsWithTag("Obstacle"); // 게임상에서 태그찾기
for (int i = 0; i < obstacle.Length; i++)
{
Destroy(obstacle[i]);
}
}
그리고 레드코인 파일에 아래코드 추가!
private void OnTriggerEnter(Collider col)// 충돌 감지
{
if (col.gameObject.name == "Ball")
{
GameObject.Find("GameManager").SendMessage("RedCoinStart");// 게임메니저에서 함수 불러오기
Destroy(gameObject);
}
}
레드코인도 끝!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class redCoin : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Rotate(new Vector3(0, 0, 100f) * Time.deltaTime);
}
private void OnTriggerEnter(Collider col)// 충돌 감지
{
if (col.gameObject.name == "Ball")
{
GameObject.Find("GameManager").SendMessage("RedCoinStart");// 게임메니저에서 함수 불러오기
Destroy(gameObject);
}
}
}
그리고 게임진행상 바닥으로 떨어지게 되면... 다시 시작되도록 하기위해
적당히 밑에 보이지 않는 큐브를 하나 설치해줍시다.
이부분을 체크 해제하면 눈에 보이지 않게 만들수있습니다.
그러고 나서 게임 메니저파일에 아래처럼 추가해줍시다.
void RestartGame()
{
UnityEngine.SceneManagement.SceneManager.LoadScene("Game");
}
그리고 그 큐브 파일에 아래처럼 추가하면 끝!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FailZone : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
private void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.name == "Ball")
{
//Application.LoadLevel("Game");
//UnityEngine.SceneManagement.SceneManager.LoadScene("Game");
GameObject.Find("GameManager").SendMessage("RestartGame"); // 게임메니저에서 함수 불러오기
}
}
}
그리고 제일 중요한 카메라는 공을 따라다니도록 공의 좌표를 받아 이동시켜줍시다!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class camera : MonoBehaviour
{
public GameObject ball;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.localPosition = new Vector3(0, ball.transform.localPosition.y +15 , ball.transform.localPosition.z -20);
}
}
그리고 이때까지 수정한 게임 매니저! (게임 매니저는 )
GameManager라고 스크랩의 이름을 정의하면
이처럼 아이콘이 바뀌고
GameObject >> 크리에이트 엠티를 만들고 위의 스크랩을 부여해주면 됩니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class GameManager : MonoBehaviour // 자주쓰이는 함수들을 모아놓고 사용가능 헤더 파일인듯?
{
// Start is called before the first frame update
public int coinCount = 0;
public TextMeshProUGUI coinText;
public Text coinText1;
void GetCoin()
{
coinCount++;
coinText.text = coinCount + "~";
coinText1.text= coinCount + "개";
}
void RestartGame()
{
UnityEngine.SceneManagement.SceneManager.LoadScene("Game");
}
void RedCoinStart()
{
DestroyObstacles();
}
void DestroyObstacles()// 모든 장애물 파괴 함수
{
GameObject[] obstacle = GameObject.FindGameObjectsWithTag("Obstacle");
for (int i = 0; i < obstacle.Length; i++)
{
Destroy(obstacle[i]);
}
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
여기까지만 하면 그렇게 많진 않지만 게임에서 사용될수 있는 여러 기능들을 구현해본것 같습니다!
다음엔 더 많이 만들어 보겠습니다!
'유니티 최고 > 유니티 구현' 카테고리의 다른 글
유니티(Unity) 모바일 GPS 위도 경도 받아오기 (0) | 2023.03.13 |
---|---|
유니티(Unity) Photon을 이용한 멀티 플레이 구현하기 (간단) (1) | 2023.02.03 |
간단한 유니티(Unity) 모바일 게임 만들기 (0) | 2022.09.01 |
유니티(Unity) 기초! -- 하늘(sky) 설정 (0) | 2022.08.25 |
유니티(Unity) 간단한 공 게임 기능 구현 1 - 공의 이동, 장애물 설치, 코인(Coin) (0) | 2022.08.24 |
댓글