사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
[Day 17] Suika Game Tutorial 1
GamJia 2024. 11. 23. 02:54
오블완 챌린지 17일차
오늘 얼른 블로그 정리하고
본가 가야돼서 귀찮은
GamJia 입니다
어제 Color Fill 강의를 끝냈고
오늘부터 Suika Game 강의를
5일 동안 진행하려고 합니다
혹시 원작을 모르시는 분들을 위해
원작 이미지를 첨부합니다
어떤 게임인지 감이 오시나요?ㅎㅎ
https://gamjia.tistory.com/259
수박게임 개발일지 - 1
수박게임 개발일지 1편 과일들을 그려보자 그녀의 다이어트 블로그 주소 https://blog.naver.com/smg5175 민영 : 네이버 블로그자기소개를 입력하세요.blog.naver.com 왜 그 많은 게임 중 수박게임이냐? 이유
gamjia.tistory.com
게임을 개발하기에 앞서 Sprite 이미지를
먼저 다운로드 받아주세요
좋은 스프라이트 이미지를 공유해주신
apps2amigos님께 감사드립니다!
https://apps2amigos.itch.io/fruit-game-free-asset-pack
Fruit Game - Free Asset Pack by Apps2Amigos
Free assets for a "suika game" project.
apps2amigos.itch.io
솔직히 이제 프로젝트 초기 세팅
감이 오셨을거라고 생각합니다
늘 그랬듯 sprite들을 정리해줄게요
배경의 패턴이 깨지지 않게
Draw Mode를 Tiled로 설정해주고
윗부분 제외 나머지 구석에
collider 벽을 세워주도록 하겠습니다
그 다음 과일 객체에
Circle Collider, Rigidbody를 적용하고
Fruit라는 class를 추가해주도록 할게요
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { [SerializeField] private List<GameObject> fruitPrefabs; // 랜덤으로 생성할 과일 프리팹 리스트 private GameObject fruit; // 현재 드래그 중인 과일 void Start() { CreateFruit(); } void Update() { if (Input.GetMouseButton(0)) // 마우스 버튼을 누르고 있을 때 { DragFruit(); } if (Input.GetMouseButtonUp(0)) // 마우스 버튼을 뗄 때 { DropFruit(); } } void CreateFruit() { // 과일 리스트에서 랜덤으로 선택 int randomIndex = Random.Range(0, 4); fruit = Instantiate(fruitPrefabs[randomIndex]); // 과일 초기 위치 설정 (화면 중앙 위) fruit.transform.position = new Vector3(0f, 4f, 0f); // Rigidbody2D를 Kinematic으로 설정 Rigidbody2D rb = fruit.GetComponent<Rigidbody2D>(); if (rb != null) { rb.isKinematic = true; } } void DragFruit() { if (fruit != null) { // 마우스 위치를 가져와 X 좌표만 업데이트 Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); mousePos.z = 0f; // 2D 환경을 가정하여 Z 좌표를 0으로 고정 mousePos.x = Mathf.Clamp(mousePos.x, -3f, 3f); // X 좌표 -3 ~ 3으로 제한 // 과일 위치 업데이트 fruit.transform.position = new Vector3(mousePos.x, fruit.transform.position.y, fruit.transform.position.z); } } void DropFruit() { if (fruit != null) { // Rigidbody2D를 Dynamic으로 변경 Rigidbody2D rb = fruit.GetComponent<Rigidbody2D>(); if (rb != null) { rb.isKinematic = false; } // 현재 과일 초기화 fruit = null; StartCoroutine(DelayFruit()); } } IEnumerator DelayFruit() { yield return new WaitForSeconds(1f); // 1초 대기 CreateFruit(); } }
그 다음 GameManager를 만들어주겠습니다
일단 과일은 체리~레몬까지만
자연적으로 생성되게 해주고
마우스를 떼기 전까지는 좌우 이동이
가능한 기능을 구현해주겠습니다
그 다음 Fruits Prefab에 방금 만든
과일 Prefab들을 레벨 순서로 넣어주겠습니다
체리가 가장 먼저, 수박이 가장 마지막이겠죠?
저장 후 실행해보니
제가 지정한 범위 내에 있는 과일들이
랜덤으로 잘 나타나고 떨어지고 있습니다!
오늘은 여기까지 하고
GitHub에 Commit하는걸로
마무리 하겠습니다!
요즘 날씨가 너무 추워졌어요ㅜㅜ
감기 안 걸리게 조심하세요!
저는 추운거 싫어해서 방금 전기장판
4단계로 틀어뒀어요....얼른 자야짓
감사합니다!!