Game Development, 게임개발/Unity

프로젝트 -2 [Unity]

게임이 더 좋아 2021. 10. 28. 14:48
반응형
728x170

github.com/powerpower2005/MiniProject/tree/master

 

 

 

 

 

 

 

 

 

 

 

이 프로젝트로 얻고자하는 바

 

  • 카메라이동
  • 사용자 입력을 스크린에서 처리
  • 기본적인 Physics + 부드럽게 움직이게하기(ex.Lerp)
  • 배경효과
  • Trail효과

 

 


 

게임목표

 

투사체를 이용하여 공을 Goal에 도달하게하라.

지난 궤적을 이용하여 조금 더 정밀하게 쏘고 적은 횟수로 클리어하자.

 

 


 

작업 내역 및 구현한 부분

 

Follow Cam
요약: 앵그리 버드의 새가 날아가면 카메라가 새를 따라가는 것처럼 구현함
투사체가 발사되면 카메라가 따라감.

상세:
Main Camera에서 static으로 gameobject를 선언해주고
Prefab을 Instantiate할 때 static 오브젝트에 할당해줌

카메라는 해당 static 오브젝트가 null check를 한다
prefab이 오브젝트에 할당되어야 카메라가 쫓아간다.

또한 범위가 벗어나면 카메라 줌아웃으로 해놓음.



해당 인스턴스가 y 값이 너무 높아지면 땅이 보이지 않아 위치를 알 수 없게됨
-> 카메라를 size를 늘려서 보이게끔 한다.

**움직임이 부자연스러워 Lerp(선형 보간)로 카메라 움직임을 구현

 


하나만 던지고 끝날 수 없기 때문에 카메라를 다시 원상복구 해야함

해당 Projectile이 sleeping인지 check 
-> sleeping -> 투사체 움직임이 0.02 이하로 떨어지면 sleeping이라고 생각
-> sleeping의 조건은 ProjectSetting-Physics에서 바꿀 수 있음
-> 해당 static 오브젝트를 null로 바꾸어 초기 위치로 카메라 전환






ProjectLine
요약: 앵그리버드처럼 투사체 날아가는 방향을 보여줌.

상세:
Line Renderer를 사용함 Trail Render와 달리 경로를 저장하기 위해 직접 구현함
Trail Renderer에 있는 기능을 참고하여 구현.(ex Min Distnace between points)
해당 오브젝트의 Position을 일정 거리에 따라 List에 저장하고 Line Renderer를 실행함으로써
Trail을 생성함.

또한 생성된 Trail은 다른 투사체가 발사되기 전까지 유지되어 이전 궤적과 비교하여 쏠 수 있게함
(투사체를 쏠 때 List 초기화됨)






Projectile
요약: 투사체

상세:

**땅에 닿아도 계속 굴러가는 현상
-> collision detection을 discrete에서 cotinuous로 만듬(이산 -> 연속)
-> Physical Material도 지정해줌.

**2D지만 Z성분 존재(World에서 존재함)
-> Rigidbody에서 constraints로 freeze position z로 z성분이 변하는 것 방지





Cloud
요약: 구름 한 개

상세:
구름을 만들어 배경효과를 줌과 동시에 정지해있으므로 운동하는 물체에게 속도감을 준다.(Vection)

손수 배치보다 스크립트로 배치함.

Empty 오브젝트를 만들어 그 안에서 Instantiate하려고 함
랜덤 좌표는 Random.insideUnitSphere 로  X^2 + Y^2  + Z^2 <= 1 의 좌표를 얻음
해당 좌표에 Offset을 곱해서 Random 위치를 만듬.
크기는 Scale에 Offset을 곱해서 Random 크기를 만듬

하지만 X값이 크다면 Y 좌표값이 작아지는 현상 발생
-> 최소의 Y값(구름 두께)를 정하고 비교해서 max값 채택.






CloudCrafter 
요약: 구름 여러개

상세:
CloudSphere가 아닌 Cloud로 prefab을 만들어 구름을 여러개 생성함
역시 랜덤으로 position, scale 설정
또한 구름을 움직이게함. 크기가 클수록 빨리 움직임.
-> 3D게임이라면 Z축이 멀수록 느리게 움직이는 Parallax구현가능.



Castle
요약: 투사체를 날려 goal에 닿는데 방해하는 장애물

상세:
직접 배치하여 prefab으로 저장
level에 따라 해당 prefab이 Instantiate하게 구현

 

 


 

이슈발생 또는 반성할 점

 

  • 이러한 게임은 스테이지 구성이 핵심이라는 것을 깨달았다. 그래서 매 스테이지마다 독창적인 방법으로 게임을 즐길 수 있게 기획해야할 것이며 이러한 과정에서 다양한 플레이 패턴을 만들어내야할 것 같다.
  • 카메라 무브먼트에 따라 게임의 역동성이 느껴진다. 1인칭 게임이 아니라면 카메라 무브먼트를 어떻게 해야 게임과 맞는지 고민해야 한다.

 


 

느낀 점

 

이러한 게임은 스테이지가 중요하다.

앵그리버드와 비슷하지만 이미 선점되어있는 게임과 다른 것을 창조하려다 보니 그것이

어렵다.

스테이지를 독창적이면서 재미있게 만드는 것이 정말 어렵다고 느꼈다.

어쩌면 게임을 만드는 것보다 스테이지 기획하는 것이 더 힘들다고 생각했다.

이 게임도 만들어놓는다면 응용될 분야가 많을 것 같다.

다양한 구조물과의 상호작용을 통해 클리어할 수도 있고앵그리버드처럼 투사체가 공이 아니라 다른 모양 또는 기능을 갖고 있게 해도 된다.

그 당시 중학생인 내가 앵그리버드할 때 약간 아쉬운 점은 사용자 설정 맵 같은 것이 없어서 아쉬웠다.

나는 그 때 스타크래프트에 빠져있어서 친구들과 맵 에디터로 블러드를 만들고 입구막기를 만들어서 플레이하곤 했는데 맵이 정말 완성도가 떨어졌지만 정말 내가 만들었다는 뿌듯함 하나로 재밌게 했는데..

아무튼 이러한 것을 게임으로 만든다면 나는 맵에디터를 주고 싶다.

슈퍼마리오 메이커랑 같은 느낌이다.

 

 

반응형
그리드형