Galaxy Ball
-
(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..
-
(4) 구체 팽창 & 팽창 후 고정Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 25. 18:13
이번엔 구체가 정지한뒤 다른 콜라이더와 충돌할때까지 팽창하는것을 구현해보겠다 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) 게임 세팅 , 공 발사 & 반사Galaxy Ball/1. 멀티플레이 - 대전모드 2024. 3. 25. 17:50
이번에는 게임이 구현될 가장 기본적인 스테이지를 만들 예정이다 쉽게 말해 그림으로 그린 인게임 화면을 유니티로 똑같이 만들어보겠다첫번째로 가장 기본이 될 BackGround. 적당히 밝은 색으로 잡아준뒤, 위에서 공이 이동을 해야하기 때문에Rigidbody2D 컴포넌트를 넣어주고, Static으로 고정시켜준다 두번째로 공이 밖으로 빠져나가지 않도록 벽의 역할을 해줄 Box Collider 2D를 Rigidbody2D와 함께 사면에 추가해준다이것 역시 움직일일 없이 고정시켜야 하므로 Rigidbody2D - Static을 선택해준다 세번째로 DeadZone. 공이 닿아버리는 순간 게임을 종료시켜버릴 공간이다하지만 여기서 중요한건 Player1의 공이 Player2의 Deadzone에 닿는건 아무 문제가 ..
-
(2) R&DGalaxy Ball/0. 게임설명 2024. 3. 25. 13:08
[R&D] •구체 충돌시 반사시키기•구체를 정지 시 확장시키기•확장이 완료되면 고정 & 충돌피해 X•패배 판정• 사운드 이펙트 찾기•적힌 횟수만큼 충돌 시 구체 파괴 (1~5 & ???)•차례가 지날때마다 턴을 바꾸기•자신의 진영에 자신이 날린 공이 DeadZone에 닿았을 때 게임종료(팽창중에 닿은건 인정 X)•아이템 랜덤 생성•아이템 기능 구현•발사 구현 본격적인 개발을 시작하기 전에 해야할것들을 하나씩 뜯어 정리해보았다. 위에 정리한 11가지가 전부 구현성공한다면 멀티플레이 모드는 완성이 됐다고 볼 수 있겠다 •싱글 플레이 모드, 멀티플레이 모드 그리고 현재 구상중인게 한가지 더 있는데 바로 싱글플레이 모드. 원래는 상대방 역할을 해줄수 있는 컴퓨터를 만들어 혼자서도 즐길수 있게 해줄까 구상만 하다..