사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
[Day 20] Suika Game Tutorial 4
GamJia 2024. 11. 26. 01:07
오블완 챌린지 20일차
오늘 저녁에 술 마셔야 돼서12시 되자마자 블로그를작성하고 있는 GamJia 입니다 어제 강의에 이어서Suika Game을 만들어 보겠습니다
일단 점수 Text와 GameOver 창을Canvas에 추가해주겠습니다저 폰트로 정말 뽕을 뽑은거 같습니다
다운로드 받은 Sprite 중에 UISprite도 있길래 잘라서 사용하겠습니다 오른쪽의 점선은 Auto로 자를 경우점선이 전부 분리 되는데 이미지처럼하나로 이어주도록 하겠습니다
자른 이미지는 버튼과 점선객체에 적용해주겠습니다객체 위치는 이미지를 참고해주세요
using System.Collections; using System.Collections.Generic; using UnityEngine; using SuikaGame; using TMPro; using UnityEngine.UI; namespace SuikaGame { public class GameManager : MonoBehaviour { [System.Serializable] public class Fruits { public GameObject prefab; // 과일 프리팹 public int score; // 점수 } [SerializeField] private List<Fruits> fruits; // 랜덤으로 생성할 과일 프리팹 리스트 [SerializeField] private GameObject guide; [SerializeField] private GameObject gameOver; [SerializeField] private TextMeshProUGUI scoreText; [SerializeField] private Button restartButton; private GameObject fruit; // 현재 드래그 중인 과일 private int score=0; public static GameManager Instance => instance; private static GameManager instance; private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else { Destroy(gameObject); } } void Start() { if (restartButton != null) { restartButton.onClick.AddListener(RestartGame); } gameOver.SetActive(false); guide.SetActive(false); CreateFruit(); } void Update() { if (gameOver.activeSelf) { return; } ... } void RestartGame() { foreach (Transform child in transform) { Destroy(child.gameObject); } gameOver.SetActive(false); guide.SetActive(false); score=0; scoreText.text="0"; fruit=null; StartCoroutine(DelayFruit(0.3)); } void CreateFruit() { ... fruit = Instantiate(fruits[randomIndex].prefab,transform.position, Quaternion.identity, this.transform); ... } void DragFruit() { if (fruit != null) { ... if(!guide.activeSelf) { guide.SetActive(true); } guide.transform.position=new Vector3(mousePos.x, guide.transform.position.y, guide.transform.position.z); } } void DropFruit() { if (fruit != null) { ... if(guide.activeSelf) { guide.SetActive(false); } } } public void DestroyFruit(GameObject first, GameObject second) { ... int index = -1; for (int i = 0; i < fruits.Count; i++) { if (fruits[i].prefab.name == first.gameObject.name) { index = i; break; } } // 다음 레벨 과일 생성 if (index == -1 || index + 1 >= fruits.Count) { return; } Vector3 spawnPosition = (first.transform.position + second.transform.position) / 2; GameObject newFruit = Instantiate(fruits[index+1].prefab, spawnPosition, Quaternion.identity,this.transform); UpdateScore(fruits[index+1].score); ... } void UpdateScore(int add) { score+=add; scoreText.text=score.ToString(); } IEnumerator DelayFruit(double time) { yield return new WaitForSeconds((float)time); // double을 float로 변환 CreateFruit(); } } }
일단 수정, 추가된 부분은 다음과 같습니다
List를 다음과 같이 Prefab List에서<Prefab,int> List로 변경했습니다체리는 가장 작은 객체라합쳐서 체리가 나오는 경우가 없기에0점으로 처리했습니다 체리+체리인 경우에는 딸기의1점을 추가하게 설정했습니다 점수는 원작의 나무위키를 참고 했습니다!https://namu.wiki/w/%EC%88%98%EB%B0%95%EA%B2%8C%EC%9E%84#s-3
수박게임
2021년 발매된 닌텐도 스위치 전용 퍼즐 게임 . 당초 일본 닌텐도 e숍 에서만 구매 가능한 내수용 게
namu.wiki
GameOver 조건이 아직 없어서오늘은 제가 hiearchy에서 직접GameOver창을 활성화 해주었습니다 점수도 잘 증가하고게임 재시작 후 초기화와점수 증가에 문제가 없는걸 확인했습니다
오늘은 여기까지 하고GitHub에 Commit하는걸로마무리 하겠습니다!드디어 내일 블로그 챌린지가끝나는 날이네요!끝까지 최선을 다하겠습니다
감사합니다!!