Galaxy Ball 101

(10.5) - 버그 개선#2

위 영상을 보면 구체가 정지하여 고정되기 전에 추가로 firezone에서 마우스를 더 클릭하면 계속해서 힘을 받아 이동하는것을 볼수가 있다. 이렇게 된다면 계속 클릭을 멈추지 않는다는 전제하에 게임이 끝나지 않을것이다 전부터 알고는 있었지만 턴제 시스템을 구현하다보면 사라질거라 생각하며 넘어왔었지만 턴제 시스템을 만들다보니 그냥 이걸 없애버리는게 더 빠르겠다는 생각이 들었다 private void Update() { if (Input.GetMouseButtonUp(0) && rigid != null) { rigid.velocity = GameManager.shotDirection * GameManager.shotDistance; // GameManager에서 값 가져와서 구체 발사 } Move(); ex..

(10) BGM & Sound Effect

이번에는 게임에 필요한 BGM 그리고 효과음을 구현해보도록 하겠다 게임의 BGM은 이곳에서 그리고 게임의 효과음은 아래 사이트에서 구해보았다 게임 효과음 다운로드 | 뮤팟 효과음 태그 검색영상 편집자에게 꼭 필요한 무료 효과음 이걸로 종결! 장면전환, 소리효과와 같은 다양한 효과음들을 획득하세요.www.mewpot.com 추후에 더 많은 효과음들이 늘어날 수 있겠지만 우선 지금 추가해보려는건 3가지다 1. 게임 BGM2. 공이 팅길때나는 기본적은 효과음3. 승패가 결정되고 씬이 전환될때 나는 효과음 우선 가장 기본이 될 게임 BGM부터 넣어보자 사실 BGM이 가장 간단하지 않을까 싶다. 그냥 메인씬에 있는 GameManager에 Audio Source 컴포넌트를 부착한뒤BGM으로 쓸 오디오소스를 넣어준뒤..

(9) 버그 개선#1

원래대로라면 이제 예정대로 턴을 변경하고 번갈아가며 공을 한개씩만 날리는 기능을 구현하려했는데방금 치명적인 오류를 하나 발견했다 만약 내가 이런 상황이라고 가정해보자. 사실상 이건 어디로 공을 쏘든 패배 확정이나 다름없는 상황이어야만 한다  근데 이걸 이렇게 빠져나올수 있고 이러면 게임의 승패가 갈릴수가 없어진다 이걸 해결하기 위해 내가 생각한 방법은 두가지이다 1. 만약 구체에 들어간 힘이 너무 약하다면 임의로 최소한의 힘을주어 앞으로 나가게 하기2. 구체가 팽창하는 과정에서 일어난 충돌은 내구도의 감소로 이어지지 않기  하지만 후에 밸런스를 위해서라도 2번이 더 적합해보이니 2번으로 결정했다사실 2번 기능은 초반에 구현할 계획이 있었지만 여러번의 시도 끝에 도저히 감을 못잡고 실패한 기능이다 usin..

(8) 발사구현 마무리

왜 한템포가 늦게 나가는지 생각을 해봤다 1. 클릭2. BallController가 삽입된 구체 생성3. BallController Start 컴포넌트에 있는 발사가 실행됨하지만 shotDirection, ShotDistance가 없으니 초기값으로 값을 넣고 발사4. 클릭을 뗌5. 그제서야 shotDirection, ShotDistance에 원하는 값이 들어감6. 두번째 발사에 적용됨 발사하는 코드를 Start에 넣었으니 그럴만도 했다. 그럼 Update에 발사문을 옮겨보자  private void Update() { if(Input.GetMouseButtonUp(0)) { rigid.velocity = GameManager.shotDirection * GameManager...

(7) Firezone, 발사구현

전글까지는 이미 다 구현해놓은 프로젝트를 글로 옮기는 작업이었지만 지금부터는 실시간으로 진행하는대로글에 옮겨적으려한다 드디어 미루고 미루다가 시작하는 발사구현. 아직 해보지 않았지만 이게 가장 까다로울것 같다 시작하기전 구현해야할 단계에 대해서 적어보겠다1. Firezone 제작2. Firezone에서만 클릭해야 구체가 생성되어 날아감3-1. 클릭 : 구체생성3-2. 클릭 상태로 잡아당김 : 구체가 생성된 위치와 마우스의 거리를 힘으로 환산 & 날리는 방향 결정3-3. 클릭을 뗌 : 그 상황된 힘만큼 구체에 힘을 주어 발사 이렇게까지가 발사구현. 사실상 3번때문에 여태 미뤄온것이다만약 여기까지 구현에 성공했다면 이제 서로의 턴마다 한번씩 주고받으며 공을 발사하게 해야한다 이번글에서는 1~3번까지 구현해볼..

(6) 내구도 표시 & 구체 파괴

이번에는 각 구체마다 1~5까지의 숫자중 랜덤숫자를 내구도로 부여한뒤 그 숫자를 날아가는 구체위에 보이게까지 하겠다그리고 내구도가 0이 되버리는 순간 해당 구체를 파괴하는것까지 구현해보도록 하겠다 가장 먼저 1~5사이에 랜덤으로 숫자를 뽑아 공에 표시하는것부터 해보겠다 사실 만들어놓은 공 프리팹에다 텍스트까지 추가해서 하나로 묶어버릴 생각이었다. 하지만 그건 너무 복잡하기도 하고 스크립트도 아예 하나 새로 만들거나 다른곳에 작성해야할것 같아 아예 텍스트 추가없이 BallController 스크립트에 자체적으로 추가하기로 했다 using System.Collections;using TMPro; //TextMeshPro 쓰려면 추가using UnityEngine;public class BallContr..

(5) 패배 판정 & 씬 변환

이번엔 패배판정과 결과에 따른 씬 변환까지 구현해보도록 하겠다 패배판정은 처음 설명에서도 말했듯 본인이 날린공이 본인의 Deadzone에 닿아야만 패배로 간주하기에조건이 약간 까다롭다. 게다가 팽창하며 Deadzone에 닿은것 역시 인정하기 않기에 조건이 하나 더 붙게된다 우선 "본인이 날린공이 본인의 Deadzone에 닿아야만 패배로 처리" 이것부터 구현해보겠다 (이걸 위해 미리 세팅해둔 Deadzone과 구체의 태그들) 사실상 패배판정이 나는 순간 곧바로 씬변환이 일어나기 때문에 둘은 동시에, 같은 스크립트에 만들어야하고,이번엔 트리거 역할을 해줄 Deadzone안에 새로운 스크립트를 만들어 넣어주도록 하겠다 using UnityEngine;using UnityEngine.SceneManagement..

(4) 구체 팽창 & 팽창 후 고정

이번엔 구체가 정지한뒤 다른 콜라이더와 충돌할때까지 팽창하는것을 구현해보겠다 using System.Collections;using TMPro;using UnityEngine;public class BallController : MonoBehaviour{ Rigidbody2D rigid; Vector2 lastVelocity; float deceleration = 2f; public float increase = 4f; private bool iscolliding = false; private bool isStopped = false; private void Start() { rigid = GetComponent(); rigid.velo..

(3) 게임 세팅 , 공 발사 & 반사

이번에는 게임이 구현될 가장 기본적인 스테이지를 만들 예정이다 쉽게 말해 그림으로 그린 인게임 화면을 유니티로 똑같이 만들어보겠다첫번째로 가장 기본이 될 BackGround. 적당히 밝은 색으로 잡아준뒤, 위에서 공이 이동을 해야하기 때문에Rigidbody2D 컴포넌트를 넣어주고, Static으로 고정시켜준다 두번째로 공이 밖으로 빠져나가지 않도록 벽의 역할을 해줄 Box Collider 2D를 Rigidbody2D와 함께 사면에 추가해준다이것 역시 움직일일 없이 고정시켜야 하므로 Rigidbody2D - Static을 선택해준다  세번째로 DeadZone. 공이 닿아버리는 순간 게임을 종료시켜버릴 공간이다하지만 여기서 중요한건 Player1의 공이 Player2의 Deadzone에 닿는건 아무 문제가 ..

(2) R&D

[R&D] •구체 충돌시 반사시키기•구체를 정지 시 확장시키기•확장이 완료되면 고정 & 충돌피해 X•패배 판정• 사운드 이펙트 찾기•적힌 횟수만큼 충돌 시 구체 파괴 (1~5 & ???)•차례가 지날때마다 턴을 바꾸기•자신의 진영에 자신이 날린 공이 DeadZone에 닿았을 때 게임종료(팽창중에 닿은건 인정 X)•아이템 랜덤 생성•아이템 기능 구현•발사 구현 본격적인 개발을 시작하기 전에 해야할것들을 하나씩 뜯어 정리해보았다. 위에 정리한 11가지가 전부 구현성공한다면 멀티플레이 모드는 완성이 됐다고 볼 수 있겠다 •싱글 플레이 모드, 멀티플레이 모드 그리고 현재 구상중인게 한가지 더 있는데 바로 싱글플레이 모드. 원래는 상대방 역할을 해줄수 있는 컴퓨터를 만들어 혼자서도 즐길수 있게 해줄까 구상만 하다..

반응형