Skip to content

Haiper0542/Corallium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 

Repository files navigation

Corallium

  • 장르 : 힐링게임

  • 역할 : 프로그래머(인게임 구현)

  • 개발 언어,툴 : C#, Unity3d

프로젝트 소개

게임 소개

  • 농사를 통해 사용가능한 산소의 양을 늘리거나 이동수단 등을 개발하여 활동 범위를 늘리고 여러 지역을 탐험하는 힐링 게임입니다.
  • 조작법
    • 좌측 조이스틱 : 플레이어 이동
  • 개발시 난관
    • VR과 NonVR을 오가는 것은 기본으로 제공되는 sdk로 구현하기는 어려웠습니다.
      • 핸드폰의 자이로 센서값을 받아와서 직접 스크립트로 화면전환을 하였으며
      • 화면을 담당하는 카메라를 2개로 나누어서 해결하였습니다.
    • 수족관 속 물고기의 움직임은 그저 랜덤 좌표로는 구현하기 어려웠습니다.
      • Flocking AI 알고리즘을 이용하여 물고기가 때로 다닐 수 있도록 인공지능을 구현하였습니다.
    • 해초류의 모델링을 담당하던 모델러가 연락두절이되어 해초류의 모델이 없었습니다.
      • 마인크래프트의 잔디처럼 sprite2개를 X자로 엇갈려놓음으로써 어느정도 자연스러운 해초를 구현하였습니다.

게임 화면

  • 게임의 메인화면입니다. 인게임에서의 닉네임을 입력할 수 있습니다.

코드

  • 에어 로프 연결 스크립트

public void AirFound()
{
   GameObject[] AirList_ = GameObject.FindGameObjectsWithTag("AirTank");
   List<GameObject> AirList = new List<GameObject>();
   for(int i = 0; i < AirList_.Length; i++)
   {
      //주변에 에어 탱크와 연결되어있거나 에어 탱크일 경우 연결 준비
      if (AirList_[i].name == "AirTank" || AirList_[i].GetComponent<AirGen>().isGen)
      {
         AirList.Add(AirList_[i]);
      }
   }

   GameObject AirPos = AirList[0];
   float tankDist = Vector3.SqrMagnitude(transform.position - AirList[0].transform.position);
   foreach (GameObject obj in AirList)
   {
      float dist = Vector3.SqrMagnitude(transform.position - obj.transform.position);
      //연결 범위 안에 있으면서 현 거리보다 더 
      if (dist < MaxAirRange && tankDist > dist)
      {
         tankDist = dist;
         airPos = obj;
      }
   }
   if (dist <= MaxAirRange)
      connectTank = airPos.transform.GetChild(0);
   else
      connectTank = null;
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published