분류 전체보기
-
(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가지가 전부 구현성공한다면 멀티플레이 모드는 완성이 됐다고 볼 수 있겠다 •싱글 플레이 모드, 멀티플레이 모드 그리고 현재 구상중인게 한가지 더 있는데 바로 싱글플레이 모드. 원래는 상대방 역할을 해줄수 있는 컴퓨터를 만들어 혼자서도 즐길수 있게 해줄까 구상만 하다..
-
(1) 게임 소개Galaxy Ball/0. 게임설명 2024. 3. 25. 12:01
중간평가를 위해 1인개발로 게임을 제작하게 되었다 게임의 이름은 -Swell Ball- (가명)아직 게임의 제목은 확실하게 정하지 못했다. 후보군으로는 It's Swell!, Expansion Ball, Exp Ball, Swell등등 다양하게 생각해뒀고 언제든지 제목은 바뀔수 있는 상태다 설명에 들어가기 앞서 우선 이 게임은 기본적으로 2명의 플레이어가 하나의 폰을 가지고 즐길수 있는 멀티플레이 게임으로검정 사각형을 폰이라고 생각하고 가운데 둔뒤 앞뒤로 앉아 플레이한다고 생각하면 된다 대표적으로 이런 느낌을 생각하면 되겠다 참고할만한 원작이 없기에 우선 개발하기 전 구상하고 있는 프로젝트를 직접 그린 그림으로 표현해보았다 이제 인게임 요소들을 하나씩 살펴보도록 하자우선 검정 사각형을 하나의 핸드폰이..
-
Vector3.Reflect유니티/유니티 코드 2024. 3. 19. 17:08
지정된 법선을 사용하여 표면을 벗어난 백터의 반사를 계산하는 함수 Vector3.Reflect(반영하려는 들어오는 벡터의 방향, 입력 벡터가 반사될 표면의 법선 벡터)incoming이 (1,1)normal(법선벡터)이 (0,1) 혹은 (0,-1)이다. Reflect될 때 법선 벡터에 수직인 평면에 대해 대칭이기 때문에 법선 벡터의 방향을 뒤집어도 결과가 변경되지 않는다 그러므로 Vector3.Reflect(incoming, normal)의 결과는 (-1,1)이 되는것이다
-
Collision.Contact[]유니티/유니티 코드 2024. 3. 19. 16:35
Collision 타입은 충돌 지점들의 정보를 담는 ContactPoint 타입의 데이터를 contacts[] 라는 배열의 형태로 제공한다 private void OnCollisionEnter2D(Collision2D coll) { // 충돌 시 이전 속도의 벡터 크기를 이용하여 반사 후 속도를 계산하고, 속도를 감속시킵니다. Vector2 dir = Vector2.Reflect(lastVelocity.normalized, coll.contacts[0].normal); float speed = lastVelocity.magnitude; // 이전 속도의 크기를 사용 rigid.velocity = dir * Mathf.Max(speed..