목록개발 (71)
메피카타츠의 블로그

갤러그에서 가장 대단하고 세련됐다고 생각되는 부분은 적의 움직임이었다. 아름답게 곡선을 그리고 차례대로 배치되는 적들을 보면 갤러그가 오랫동안 사람들에게 사랑받은 이유가 무엇인지 알 수 있었다. 보통은 직선 운동이나, 키 입력을 받아서 이동하는 부분만 구현해서 곡선 운동을 어떻게 구현하는지 찾아보았다. 그와 관련해서 찾은 것이 베지에 곡선이었다. 여러 블로그를 참고했지만 바로 머리에 들어오지는 않았다. 유니티 - 베지어 곡선(Bezier Curve) | Rito15 유니티 - 베지어 곡선(Bezier Curve) 베지어 곡선 점과 점 사이의 선형 보간(Lerp, Linear interpolation)을 이용해 그려내는 곡선 rito15.github.io 내 기준 가장 설명이 깔끔했던 블로그는 여기다. 위..
public IEnumerator HitByEnemy(GameObject midoriPlane, GameObject enemy) { if (!_isAlivePlane) yield break; _isCanMove = false; _isAlivePlane = false; midoriPlane.GetComponent().color = Color.clear; StartCoroutine(ShowExplosion(midoriPlane)); audioManager.PlaySFX("EnemyDestroy"); if (enemy.CompareTag("EnemyBullet")) { enemy.SetActive(false); } StartCoroutine(MidoriPlaneRevive()); } 먼저 HitByEnemyB..

스킬 아이콘을 담을 스킬 테두리를 추가했다. 이전에 게임 영역을 나누는 Bar에 적용된 효과를 그대로 적용했다. 효과는 포토샵으로 은색을 표현하는 자료를 검색해서 적용한 것이다. 다음으로는 스킬 관련 오류를 수정했다. 적을 처치할 떄 가끔 적이 정상적으로 사망 처리가 되지 않았는데, 이유는 IEnumerator 사용 방식에 있었다. 문제를 찾기 위해 디버깅을 하니 yield return new WaitForSeconds(1); 이후 부분이 실행이 되지 않는 문제가 있었다. 이에 관해 구글링을 하다가 아래 글의 PraetorBlue라는 유저의 답변에서 도움을 받았다. Coroutine stops working after yield return - Unity Forum Coroutine stops worki..

이번에 추가한 이미지는 이 2종이다. 위는 아리스의 헤일로 이미지, 아래는 게임 화면을 나타낼 Bar 모양 Sprite다. 이외에는 기획했던 것처럼 오른쪽엔 점수와 남은 목숨을, 왼쪽에는 미도리의 일러스트를 추가했다. 왼쪽의 일러스트는 스토리에서 사용한 것을 가져와서 적을 처치하면 웃으며 점프하는 부분까지 추가했다. 또, 오브젝트 풀링 기법을 적용하여 적을 소환하는 기능을 추가했는데, 헤일로 이미지에도 같은 기술을 적용하다보니 구현이 비슷한 부분들이 많아 하나의 함수로 통합했다. private GameObject GetFrefab(string name) { if(name == "MidoriHalo") { if (_midoriHaloQueue.Count > 0) { return _midoriHaloQueu..

오늘 추가한 도트는 이 5가지로, 배경에 사용할 별 모양이다. 배경을 어떻게 구성하면 좋을까 생각할수록 점점 고민만 깊어지는 것 같아서 막무가내로 찍어보았다. 수정을 거치다보니 그럭저럭 봐줄만하게 나왔다. 잘해야 한다는 부담감과, 익숙하지 않은 것을 해야 하는 두려움이 겹쳐지다보니 괜히 걱정만 느는 것 같다. 확실히 나한테 있어 일러스트레이터는 소중한 존재다. 향후 함께 일하는 일러스트레이터들에게 아무리 감사를 표해도 모자라지 않을 것 같다. 그 외에는 어제 목표로 했던 함수 수정과 Collider를 활용하여 총알 적중 기능, 배경 화면을 구현했다. public IEnumerator ShootMidoriBullet(Vector2 direction) { GameObject bullet = GetMidori..

오늘 추가한 이미지는 이 두 개이다. 배경이 흰색이라 잘 안보이는데 흰색 기둥 끝자락에 초록색/빨간색 삼각형이 달려있다. 일단 임시로 만든 총알이다. 이후에는 슈팅 게임 개발에 착수했다. 먼저 키 입력을 구현했다. void Update() { // 상하좌우 이동, 화면 밖으로 벗어나지 않도록 움직임에 제한을 둠 if (Input.GetKey(KeyCode.UpArrow)) { if (!(midoriAirplane.GetComponent().anchoredPosition.y >= 500)) { midoriAirplane.GetComponent().anchoredPosition = new Vector2(midoriAirplane.GetComponent().anchoredPosition.x, midoriAir..

오늘 추가한 도트는 이 2종이다. 모모이꺼는 미도리꺼랑 똑같이 생겨서 색만 변경했다. 이외에는 어제 계획했던 물음표 애니메이션을 추가하고, 배경을 넣고 20개 정도의 대사를 추가해서 1번 게임(슈팅 게임) 진행 전까지 스토리 진행을 마쳤다. 크게 달라진 부분이 있는 것은 아니라 오늘은 녹화는 하지 않았다. 스토리 상에서 잠깐 지나가듯 1번 게임을 보여줘야 하는 부분이 나왔기 때문에 1번 게임을 먼저 만드는 것이 순서상 맞겠다고 생각을 했다. 그런데 막상 개발하려고 생각하니 조금 막막했다. 우선 총알을 추가해서 총알과 기체들에 콜라이더를 넣고, 충돌 판정을 통해 적을 공격하고 공격받는 것을 구현하는 기본적인 슈팅 게임의 구조까지는 문제될 것이 없었으나, 적이 몇 명 등장하고, 어떻게 움직이는지, 배경 화면..

오늘 찍은 도트는 스킬 쓸 때 이펙트로 나타날 미도리의 헤일로다. 이후에는 2화의 스토리 시작 부분 작업을 했다. 작업을 하면서 느낀 것인데, 이 뒤에 해야할 일이 무엇인지 작은 단위로 쪼개서 목표를 확실하게 정하는 것이 능률을 올리는 데에 도움이 되는 것 같다. 단순히 무엇을 하기로 생각하기보다는 그 일을 하기 위해 필요한 작업이 무엇인지 정해놓으니 작업을 진행하기가 훨씬 수월했다. 가령 오늘의 목표였던 2화 스토리 개발에서 다음 부분을 진행하기 위해서 배경을 블루 아카이브에서 캡쳐해와야한다든지, 위에서 아래로 움직이는 작업을 추가해야한다든지 목표를 세우는 것이다. 캐릭터가 미도리밖에 나오지 않고, 움직이는 효과 등이 없으니 스토리 진행이 1화보다 훨씬 빨랐다. 단, 고민이 되는 부분이 있었는데 1화는..