본문 바로가기
Project/Pong with Swing

Pong with Swing 프로젝트 후기

by Excidus 2023. 1. 27.

게임 플레이 사진

게임 플레이 영상

 

게임소개: 고전게임 Pong을 유니티로 만들었다. 게임은 2인용이고 1p는 w,s 키로 위아래로 움직이고 스페이스바를 눌러 라켓을 회전시켜서 스매시를 날릴 수있다. 2p는 화살표 위아래키로 움직이고 백스페이스 버튼을 눌러 라켓을 회전시켜서 스매시를 날릴 수있다.

기존 게임과의 차별점은 라켓을 회전시켜 공을 더 빠르게 날리거나 공을 회전시켜서 상대방이 받기 어렵게해서 점수르 획득할 수 있지만, 자책골을 넣을 수도 있어서 조심해야한다.

 

 

이번 프로젝트 진행하면서 배운 점

 

●MonoBehaviour: MonoBehaviour클래스는 에디터에서 게임 오브젝트에 스크립트를 연결할 수있는 프레임워크를 제공할 뿐만 아니라, Start(), Update() 등과 같은 유용한 이벤트에 대한 연결을 제공한다

 

●유니티에서 상속받는 법: 스크립트의 이름 옆에 ' : '  쓰고 상속받을 스크립트의 이름을 적어주면 된다.

 

●유니티에서 스크립트를 생성하면 자동으로 MonoBehavior 스크립트가 상속되어져서 :MonoBehaviour가 자동으로 생성된다. 이에따라 MonoBehavior에 구현되어있는 기능들을 사용할 수 있다.

 

코루틴: 필요한 상황에서만 발생시키게함, Update와 상관없이 -> 불필요한 계산 처리안해서 더 효율적, 잠깐만 사용되는 동작들에 사용

Yield 와 같이 사용

 

 

rb = GetComponent<Rigidbody2D>();

Rigidbody2D를 가져와서 사용

 

 

유니티에서 소리나게 하는법

 

-사운드를 프리팹으로 만들어서

Instantiate(hitsfx,transform.position,transform.rotation);

 

-에셋에 사운드에셋을 넣고 GetComponet를 사용

GetComponent<AudioSource>().Play();

 

-배경음악일 경우 : backgroundMusic을 사용

if (backgroundMusic == null)

        {

            backgroundMusic = this;

            DontDestroyOnLoad(backgroundMusic);

        }

        else

        {

            Destroy(gameObject);

        }

 

ChangeScene 스크립트로 처리

SceneManager.LoadScene(SceneID) 넘어갈 씬을 정할 수 있다.

Application.Quit(); 실행 종료

 

 

collision.gameObject.name == "Player 1"

게임 오브젝트 이름을 정확히 똑같이 적어야 작동한다. 만들면서 게임이 제대로 작동되지않아서 어디가 문제인지 계속 찾다가 이름에서 공백을 적어버려서 오류가 계속 발생했었다.

 

느낀점!!

유튜브에서 유니티 Pong 클론코딩을 참고해서 진행하였다. 방학기간동안 1주일에 게임 한개씩 만드는 것을 목표로 만들어가고있는데 이번 프로젝트를 하면서 여러 함수나 유니티의 기능들에 대해서 배울 수있었다. 효과음은 무료 효과음 사이트에서 고민해서 골랐고 배경음악은 최근에 재미있게 플레이한 카트라이더 드리프트에서 가져와서 만들었다. 다음번에는 더 재미있고 복잡한 게임을 만들어 봐야겠다.

 

추후 개선할 점!!

라켓이 제자리에서 돌고나서 다시 원래 상태로 돌아가야되는데 라켓이 돌아간 각도 그대로 유지된다. Rotate함수 써서 라켓의 Z부분을 변경하는데 맘대로 잘 안된 점이 아쉽다. 추후 계속 공부하다가 해결책을 찾을 예정이다.

 

 

 

 

 

 

공부하면서 참고한 곳:

 

절대강좌 유니티!

 

https://www.youtube.com/watch?v=JZvNFrS7wTM 

https://blog.naver.com/PostView.nhn?blogId=dj3630&logNo=221459387675 

 

[유니티 기초] - Coroutine

코루틴 함수란 - 일반 함수는 한 번 호출되면 하나의 프레임 내에 실행을 완료하고 값을 반환한다. 그렇기...

blog.naver.com

https://luv-n-interest.tistory.com/696

 

Coroutine,코루틴(IEnumerator, StartCoroutine, yield 등 )에 대한 모든 것 [Unity]

모든 것을 자세히 알기 전에 코루틴(Coroutine)이라는 것에 대해서 알고 가야 한다. A coroutine is a function that can suspend its execution (yield) until the given YieldInstruction finishes. 쉽게 말하면 잠시 ~할 시간을

luv-n-interest.tistory.com

https://docs.unity3d.com/kr/530/ScriptReference/MonoBehaviour.html

 

UnityEngine.MonoBehaviour - Unity 스크립팅 API

MonoBehaviour is the base class from which every Unity script derives.

docs.unity3d.com

 

'Project > Pong with Swing' 카테고리의 다른 글

Pong with Swing 게임 기획서  (2) 2023.01.17