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