Galaxy Ball/1. 멀티플레이 - 대전모드
-
(11) 턴제 시스템Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 28. 17:24
이제 정말 완성에 가까워져가고 있다. 이제 남은게 턴 변경과 아이템뿐이니사실상 초반 구상에 없었던 아이템을 제외하고 턴변경만 구현하고 나면 게임완성이나 다름없다 이것도 한번에 끝날 단계가 아니니 한번 단계를 나누어 구현해보도록 하자 1. P2 firezone에서 P2ballPrefab도 발사되게 하기2. 각 턴에 하나의 구체만 발사 할수 있다3. Player1이 하나의 구체를 발사하고, 팽창하고, 구체가 고정되는 순간 턴 종료4. 턴 종료가 되어야지만 Player2가 구체를 발사할 수 있다5. 해당 턴 Player의 Firezone만 활성화 가장 기본적인 1번부터 시작해보자우선 구체를 생성하고 발사를 구현하는 스크립트는 GameManager에 있고거기서 P2firezone과 P2ballPrefab을 추가..
-
(10.5) - 버그 개선#2Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 28. 17:05
위 영상을 보면 구체가 정지하여 고정되기 전에 추가로 firezone에서 마우스를 더 클릭하면 계속해서 힘을 받아 이동하는것을 볼수가 있다. 이렇게 된다면 계속 클릭을 멈추지 않는다는 전제하에 게임이 끝나지 않을것이다 전부터 알고는 있었지만 턴제 시스템을 구현하다보면 사라질거라 생각하며 넘어왔었지만 턴제 시스템을 만들다보니 그냥 이걸 없애버리는게 더 빠르겠다는 생각이 들었다 private void Update() { if (Input.GetMouseButtonUp(0) && rigid != null) { rigid.velocity = GameManager.shotDirection * GameManager.shotDistance; // GameManager에서 값 가져와서 구체 발사 } Move(); ex..
-
(10) BGM & Sound EffectGalaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 28. 02:28
이번에는 게임에 필요한 BGM 그리고 효과음을 구현해보도록 하겠다 게임의 BGM은 이곳에서 그리고 게임의 효과음은 아래 사이트에서 구해보았다 게임 효과음 다운로드 | 뮤팟 효과음 태그 검색영상 편집자에게 꼭 필요한 무료 효과음 이걸로 종결! 장면전환, 소리효과와 같은 다양한 효과음들을 획득하세요.www.mewpot.com 추후에 더 많은 효과음들이 늘어날 수 있겠지만 우선 지금 추가해보려는건 3가지다 1. 게임 BGM2. 공이 팅길때나는 기본적은 효과음3. 승패가 결정되고 씬이 전환될때 나는 효과음 우선 가장 기본이 될 게임 BGM부터 넣어보자 사실 BGM이 가장 간단하지 않을까 싶다. 그냥 메인씬에 있는 GameManager에 Audio Source 컴포넌트를 부착한뒤BGM으로 쓸 오디오소스를 넣어준뒤..
-
(9) 버그 개선#1Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 27. 16:10
원래대로라면 이제 예정대로 턴을 변경하고 번갈아가며 공을 한개씩만 날리는 기능을 구현하려했는데방금 치명적인 오류를 하나 발견했다 만약 내가 이런 상황이라고 가정해보자. 사실상 이건 어디로 공을 쏘든 패배 확정이나 다름없는 상황이어야만 한다 근데 이걸 이렇게 빠져나올수 있고 이러면 게임의 승패가 갈릴수가 없어진다 이걸 해결하기 위해 내가 생각한 방법은 두가지이다 1. 만약 구체에 들어간 힘이 너무 약하다면 임의로 최소한의 힘을주어 앞으로 나가게 하기2. 구체가 팽창하는 과정에서 일어난 충돌은 내구도의 감소로 이어지지 않기 하지만 후에 밸런스를 위해서라도 2번이 더 적합해보이니 2번으로 결정했다사실 2번 기능은 초반에 구현할 계획이 있었지만 여러번의 시도 끝에 도저히 감을 못잡고 실패한 기능이다 usin..
-
(8) 발사구현 마무리Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 27. 15:12
왜 한템포가 늦게 나가는지 생각을 해봤다 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, 발사구현Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 26. 16:40
전글까지는 이미 다 구현해놓은 프로젝트를 글로 옮기는 작업이었지만 지금부터는 실시간으로 진행하는대로글에 옮겨적으려한다 드디어 미루고 미루다가 시작하는 발사구현. 아직 해보지 않았지만 이게 가장 까다로울것 같다 시작하기전 구현해야할 단계에 대해서 적어보겠다1. Firezone 제작2. Firezone에서만 클릭해야 구체가 생성되어 날아감3-1. 클릭 : 구체생성3-2. 클릭 상태로 잡아당김 : 구체가 생성된 위치와 마우스의 거리를 힘으로 환산 & 날리는 방향 결정3-3. 클릭을 뗌 : 그 상황된 힘만큼 구체에 힘을 주어 발사 이렇게까지가 발사구현. 사실상 3번때문에 여태 미뤄온것이다만약 여기까지 구현에 성공했다면 이제 서로의 턴마다 한번씩 주고받으며 공을 발사하게 해야한다 이번글에서는 1~3번까지 구현해볼..
-
(6) 내구도 표시 & 구체 파괴Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 26. 10:30
이번에는 각 구체마다 1~5까지의 숫자중 랜덤숫자를 내구도로 부여한뒤 그 숫자를 날아가는 구체위에 보이게까지 하겠다그리고 내구도가 0이 되버리는 순간 해당 구체를 파괴하는것까지 구현해보도록 하겠다 가장 먼저 1~5사이에 랜덤으로 숫자를 뽑아 공에 표시하는것부터 해보겠다 사실 만들어놓은 공 프리팹에다 텍스트까지 추가해서 하나로 묶어버릴 생각이었다. 하지만 그건 너무 복잡하기도 하고 스크립트도 아예 하나 새로 만들거나 다른곳에 작성해야할것 같아 아예 텍스트 추가없이 BallController 스크립트에 자체적으로 추가하기로 했다 using System.Collections;using TMPro; //TextMeshPro 쓰려면 추가using UnityEngine;public class BallContr..
-
(5) 패배 판정 & 씬 변환Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 25. 22:39
이번엔 패배판정과 결과에 따른 씬 변환까지 구현해보도록 하겠다 패배판정은 처음 설명에서도 말했듯 본인이 날린공이 본인의 Deadzone에 닿아야만 패배로 간주하기에조건이 약간 까다롭다. 게다가 팽창하며 Deadzone에 닿은것 역시 인정하기 않기에 조건이 하나 더 붙게된다 우선 "본인이 날린공이 본인의 Deadzone에 닿아야만 패배로 처리" 이것부터 구현해보겠다 (이걸 위해 미리 세팅해둔 Deadzone과 구체의 태그들) 사실상 패배판정이 나는 순간 곧바로 씬변환이 일어나기 때문에 둘은 동시에, 같은 스크립트에 만들어야하고,이번엔 트리거 역할을 해줄 Deadzone안에 새로운 스크립트를 만들어 넣어주도록 하겠다 using UnityEngine;using UnityEngine.SceneManagement..