본문 바로가기

CardAndGun

[10] Card And Gun 개발일기 10. Player 이동과 카메라 이동 많은 부분들이 개선되었지만, 여전히 가장 중요한 Player의 움직임이 어색하다. Speed의 종류를 구분하고, 물체의 회전을 Mouse X의 입력을 받아 수평 방향 회전을 해결하자. 그렇지만 이 경우 사소한 문제가 있는데, 마우스를 너무 위로 올리면 180도 돌아버린다는 것이다. 사실 오브젝트 자체가 돌아가는 것도 이상하지만, 지금은 에셋을 적용하지 않은 구체의 형태이니 그냥 넘어가고, 에셋을 적용한 이후 고치도록 하자. 나중에는 분명 캐릭터의 고개와 총, 카메라만 돌아가야 할 것이다. 그걸 해결하기 위한 함수가 바로 Mathf에 내장되어 있는 Clamp. 각도의 최소치와 최대치를 더해준다. 카메라의 Y 각을 +-85도로 제한하여 카메라가 돌아가는 것을 막아주자. 더보기
[09] Card And Gun 개발일기 09. UI 다듬기와 홈 화면 그림판에서 그림 솜씨를 뽐내본다. 이 HP Bar가 기존의 것을 대체할 것이다. Enemy를 타격하면, Enemy의 정보가 HUD(전투용 UI)에 업데이트된다. 어느정도 사격장같은 느낌이 갖춰졌으니, 이 사격장으로 이동하기 전의 메인 화면을 만들어보자. 역시 그림솜씨를 뽐내어 홈 화면을 만들어준다. 나중에는 여러가지의 버튼이 추가되겠으나, 지금 당장은 방금 만든 사격장의 Scene만 있기 때문에, 버튼 하나면 충분하다. 이런 버튼들의 관리는 GameManager라는 빈 오브젝트와 스크립트를 생성하여 관리해줄 것이다. SceneManager의 LoadScene 함수를 사용하여 장면을 이동하는데, 이때 Build Settings에서 이동할 Scene가 미리 올라와 있어야 한다... 더보기
[08] Card And Gun 개발일기 08. Monster HP와 HUD 이제 Enemy와 총알의 상호작용을 만들어 볼 것이다. 적이 있으면, 적의 HP를 보여주기도 하면 좋을 것 같다는 생각에서 나왔다. HP는 화면의 UI에 추가해서 적의 위치를 추적하면서 따라다니면 될 것 같다는 생각이 든다. 하지만 동시에, UI와 HUD를 구분하자는 생각도 든다. 플레이어가 조작할 수 있는 메뉴 버튼과 전투에서 변화하는 값을 다루는 HP, Money등은 느낌이 다르지 않은가? 그래서 생각한 방법은, 현재 공격중인 몬스터의 HP를 위에 띄워주는 것이다. 그걸 위해서 체력바 UI를 만들었다. 그렇다면 이제 몬스터의 HP와 위의 체력바를 연동하는 것이 과제이다. Bullet 태그를 가진 오브젝트가 Enemy에 닿으면, Enemy의 TakeDamage() 함.. 더보기
[05-07] Card And Gun 개발일기 5. 버튼 만들기 게임 중, 드러난 마우스 커서를 조작해야하는 일이 생기면, 보통 어떤 버튼을 누르는 일이다. 직접 버튼을 만들어보고, 작동하는 함수를 구현해보자. 버튼 자체를 만드는 것은 어렵지 않다. 또, 버튼의 작동을 스크립트로 설정할 수도 있지만 간단한 액션 정도는 엔진 내에서 해결하는 편이 빠르다. 6. 카메라 전환하기 FPS 게임을 만들다보면, 카메라의 시점을 바꿔야하는 상황이 온다.(지향사격, 조준사격 등) 그런 카메라를 변환하는 함수를 버튼 클릭을 통해 실행하도록 만들어보자. 우선은 엔진 내에서 카메라를 두 개 배치한다. 각각의 카메라에서 보이는 시점은 위와 같다. 이제 버튼 클릭을 통해 둘 사이를 전환해야한다. 코드 내에서 Camera 변수 둘을 선언한 뒤, enabled 상태를 변경해주.. 더보기
[03-04] Card And Gun 개발일기 03. 플레이어 이동 위의 1, 2번에서는 플레이어 에셋을 받아 사용했지만, 직접 플레이어를 구현하는 방법도 존재한다. 배운 플레이어의 이동방식에는 여러가지 방식이 있다. 이번에 써 볼 첫 번째 방법은 바로 속도값을 주는 것. 가장 간단한 방식으로 특정 키를 입력 받았을 때, 그 방향으로 이동 시키는 것이다. 또 다른 방법으로는 물체의 물리적 바디, RigidBody를 생성하고 그것에 간섭하는 방식이다. Rigidbody를 생성하고, 스크립트에서 받아오자. 그리고 특정 키를 입력하면 반응하는 GetKeyDown(KeyCode) 보다는, InputManager를 활용한 시스템 사용을 권장한다. 다른 플랫폼에서 연동이 수월하기 때문이다. InputManager에서 Vertical, Horizontal, Ju.. 더보기
[01-02] Card And Gun 개발일기 01. HP Bar 제작. 준비물은 HP Bar로 사용할 이미지. (차 있는 이미지, 비어있는 이미지) UI Canvas에 HP바 이미지 두개를 겹치고(하위 오브젝트를 상위 오브젝트 크기에 꽉 채우는 식으로) 캔버스 내에서 HP 이미지 위치를 설정한다. 유니티의 Image에는 fillAmount라는 변수값을 통해 이미지 전체의 몇 %만 나타낼 지 고를 수 있다. HP 바는 현재 HP/ 최대 HP의 비율만큼 왼쪽에서 채우면 해결된다. 그러면 다음으로는 플레이어의 HP 변수와 Image를 연동시키는 것. 매 프레임 호출하면 비효율적이므로 Action을 사용하여 필요한 때만 Hp Bar의 변화를 호출한다. 작업이 끝났으면 OnHealthChanged()를 함수 내에 호출하여 HP의 변화를 체력바에서 확인할 수.. 더보기
00. 초기 기획 및 구상 참고가 된 게임은 세 개. Slay the Spire, Gunfire Reborn, Enter the Gungeon. 로그라이크 방식의 FPS가 생각보다 재밌을 수 있다는 것을 GunFire Reborn을 통해 깨달았고, 플레이하면서 Slay the Spire의 덱 빌딩 방식이나 Enter the Gungeon의 스테이지 돌파나 The Binding of Issac 조합 같은 방식이 추가되면 더 재밌을 것 같았다. 그래서 생각해본 게임의 태그는 3D, FPS, 덱빌딩, 로그라이크. 추후 추가할 수 있겠지만, (총, 총알, 유틸) 과 같은 카드 덱을 구성. 덱에서 카드를 뽑아 그때 그때 캐릭터의 성능을 조합하는 방식으로 스테이지-보스를 돌파하는 게임을 만들어 보도록 한다. 또한, 게임을 개발하면서 Unit.. 더보기