포트폴리오/개인 프로젝트

[개인 프로젝트] DESERT

이름?없음 2024. 3. 5. 14:57
반응형
반응형

2023년 2학년 1학기 개인 프로젝트 포트폴리오

깃허브 : https://github.com/dkdkdsa/DESERT

다운로드 : https://drive.google.com/file/d/1LMYhW7CimMRxI5OdHCnxqDpbYWvjhm3i/view?usp=sharing

영상 : https://youtu.be/oR0SjQjxptw

 

1. 게임 개요

설명 : 주인공이 갑자기 사막 신전에 갇혀버려 여러 퍼즐을 풀어나가며 사막 신전을 탈출하는 게임

기획 의도 : 당시 특정 감성을 잘 살린 퍼즐 탈출 게임을 만들고 싶었다 원래는 하늘섬에서 탈출하는 게임을 기획하였으나 더 소전이라는 게임을 보고 고대 유적의 느낌을 잘 살린 퍼즐 탈출게임을 만드는것도 재미있겠다고 생각하여 기획하게 되었다

 

장르 : 퍼즐

 

2. 개발 전 구상

고대 유적에 있을 법한 특이하고 신기한 퍼즐 요소들

현실에 존재하지 않는 고대 유적의 몽환적인 느낌을 최대한 살린 그래픽

최대한 고대 유적의 느낌을 잘 살린 맵 디자인

 

3. 구현

게임을 만들면서 어느 위치로 이동해야하는지 잘 모를수도 있겠다 라는 느낌을 많이 받았다

그래서 1스테이지에서만 길을 안내해주는 가이드를 개발하였다

코드

코드를 구현할 때 수학시간에 배운 Sin Cos그래프를 사용해서 코드를 구현해 보았다

using Enums;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class FairyMovement : MonoBehaviour
{

    private FairyState state;
    private Vector3 originPos;

    private void Awake()
    {
        
        originPos = transform.position;

    }

    private void Update()
    {
        
        if(state == FairyState.Idle)
        {

            transform.position = new Vector3(
                originPos.x + (Mathf.Sin(Time.time * 2) / 3),
                originPos.y + (Mathf.Cos(Time.time * 3) / 3),
                originPos.z + (Mathf.Sin(Time.time * 5) / 3));

        }


    }

    public void SetMove(Vector3[] arr, float spd, UnityEvent endEvent)
    {


        state = FairyState.Move;

        StartCoroutine(MoveCo(arr, spd, endEvent));

    }

    private IEnumerator MoveCo(Vector3[] arr, float spd, UnityEvent endEvent)
    {


        for (int i = 0; i < arr.Length; i++)
        {

            float per = 0;

            Vector3 resPos = transform.position;

            while(per < 1)
            {

                per += Time.deltaTime * spd;

                transform.position = Vector3.Lerp(resPos, arr[i], per);

                yield return null;

            }

            yield return null;

        }

        originPos = transform.position;
        state = FairyState.Idle;
        endEvent?.Invoke();


    }

}

퍼즐요소

퍼즐 요소는 최대한 현실에 없을 것 같은 느낌으로 만들면서 플레이어가 재미를 느낄 수 있는 요소로 기획해야 했다 그래서 여러 게임들을 찾아보며 참고도 많이 했다 최종적으로는 어둠 모드 라는것을 만들어 어둠 모드에서만 보이는 오브젝트가 있다던지 어둠 모드에서는 석상과 플레이어의 위치를 바꿀 수 있도록 하여 원래는 가지 못하던 곳을 갈 수 있게 하는 형식의 퍼즐 요소를 디자인 했다

 

어둠 모드

어둠 모드 상태일 때만 보이는 오브젝트

 

보이지 않을때

어둠 모드일 때

플레이어와 위치를 바꾸는 오브젝트

어둠 모드 상태일 때 플레이어와 위치 전환이 가능해진다

 

4. 프로젝트에서 문제점

너무 그래픽 부분에만 집중했더니 코드도 다른 프로젝트에 비하여 많이 작성하지 않았고 기획도 다른 게임을 너무 참고했다는 느낌이 많이 들었다

 

5. 프로젝트를 통하여 느낀점

생각보다 좋은 그래픽을 만드는 것은 많이 어려운 것이라는 것을 느꼈고 기획, 맵 디자인, 개발을 전부 혼자하다 보니 여러가지 요소가 부실하게 나온 것 같다 그래도 생각 이상으로는 퀄리티가 좋게 나와주어서 뿌듯했다

반응형