전체 글
-
게임개발 9일차 (간단한 슈팅게임 7)게임 개발 2025. 6. 3. 18:49
어제부로 3d를 시작하려고 했지만 중요한 걸 안해서 다시 돌아왔다.바로 esc를 눌렀을 때 멈추게 하고 메뉴가기 다시시작하기 진행하기 끄기 등등의 기능을 넣어주는 것 캔버스 screen space - overlay로 하나 만든 후 아래에 PauseMenu 아래에 버튼과 텍스트를 구현했다.PauseMenuController 스크립트를 만들어서 빈 오브젝트인 PauseMenuController에 넣고각 버튼에 스크립트의 함수들을 넣었다. using UnityEngine; using UnityEngine.SceneManagement; public class PauseMenuController : MonoBehaviour { public GameObject pauseMenuUI; // PauseMenuC..
-
게임개발 8일차 (간단한 슈팅게임 6)게임 개발 2025. 6. 2. 21:26
오늘은 적 HP바 / 캐릭터-플레이어,적 상속 / 자동쏘기+속도제한을 구현했다. public class Character : MonoBehaviour { public virtual void Move() { // 기본 이동 구현 } }public abstract class Character : MonoBehaviour { public abstract void Attack(); } 위처럼 기본 클래스에 virtual - override로 추가구현을 할 수도 있고abstract - override로 자식에서 완전구현을 하도록 만들 수도 있다.Bullet.cs의 일부이다.private void OnTriggerEnter2D(Collider2D collision) // 충돌 시..
-
게임개발 7일차 (간단한 슈팅게임 5)게임 개발 2025. 5. 29. 20:23
오늘한일은다음과같다. 적이 죽고나서 죽음 애니메이션이 진행중일 때 총알을 맞을 때마다 죽음사운드가 반복되는 현상을 제거-> isDead bool 변수를 만들어서 죽었을 때는 상호작용 안되도록 hp를 숫자로도 보여줌 게임오버 장면에서 점수를 보여줌-> 따로 c# 스크립트를 만들어서 게임끝날 때 저장하게 함 몇킬을 했는지 알려줌 흥미진진한 배경음 삽입 버튼에 마우스를 올렸을 때 올렸다는 표시 내가 죽었을 때 죽은 상태에서 가만히 아무 상호작용도 못함-> isDead bool 변수로 죽으면 충돌, 움직임이 안되도록 적이 나에게 충돌하고 나서 계속 비빌 때 1초간격으로 데미지를 계속 입음-> 이걸 Coroutine이라고 하는데 내일 원리를 적어보도록 하자. collision.gameObject.tag == "E..
-
게임개발 6일차 (간단한 슈팅게임 4)게임 개발 2025. 5. 28. 15:09
오늘은 메뉴, 게임오버 Scene을 만들고 버튼들을 만들어 장면들을 옮겨다니도록 만들었다. 그리고 에셋스토어에서 무료 효과음을 받아서 효과음들을 집어넣었다. 어제 오늘 했던 것들 간단하게 코드와 방법들을 리뷰해보려고 한다. 먼저 적의 코드다.using System.Collections;using System.Collections.Generic;using UnityEngine;public class Enemy : MonoBehaviour { public float speed = 2; // 피격 시 반짝이는 머티리얼과 기본 머티리얼 // 머티리얼 = "게임 오브젝트의 피부"// 오브젝트가 무슨 색인지, 반짝이는지, 투명한지, 이미지를 입혔는지 등을 설정하는 "껍질" public Materi..
-
게임개발 4일차 (간단한 슈팅게임 2)게임 개발 2025. 5. 26. 19:34
오늘은 간단하게 어제 작성한 코드를 리뷰해보려고 한다. 유니티에서 스크립트 컴포넌트를 생성하면 기본적으로 MonoBehaviour클래스를 상속받는다.유니티에서 C#으로 게임오브젝트에 동작을 붙이기 위한 기본적인 틀이다. Awake() : 오브젝트가 생성될 때 가장 먼저 실행OnEnable() : 오브젝트가 활성화될 때 실행Start() : 오브젝트가 활성화된 후 첫 프레임 전에 실행Update() : 매 프레임마다 실행FixedUpdate() : 물리 연산용으로 미리 정한 일정한 시간마다 실행됨 (Update로 프레임마다 실행되면 프레임드랍 등이 일어나면 연산이 잘못될 수 있기 때문)LateUpdate() : Update 이후에 실행. 주로 카메라 따라가게 할 때 실행한다고 함. 멤버변수를 public으..
-
게임개발 3일차 (간단한 슈팅게임 1)게임 개발 2025. 5. 25. 16:29
오늘부터는 벽에 갇힌 공간에서 적이 리스폰되고, 플레이어가 총을 쏴서 그적들을 제거하면서 살아남는 간단한 게임을 만들어보려고 한다. 1. 그래픽 에셋 다운내가 사용할 그래픽을 만들어 놓은 사이트에서 다운을 받고2. 그래픽 에셋 임포트그걸 유니티에 넣어서 적절하게 자르고3. 타일 맵적절하게 잘린 것을 이용해 바닥과 벽을 구현하고4. 플레이어 캐릭터 생성플레이어 캐릭터 오브젝트를 생성하고5. 입력과 컨트롤입력과 컨트롤에 관한 스크립트를 짜주고6. 충돌처리플레이어가 벽과 충돌했을 때 멈추도록 설정하고7. 애니메이션걸어다닐 때 가는 방향대로 캐릭터가 보도록 설정하고 움직일 때는 애니메이션에 따라서 뛰도록 해주고8. 총알 발사총알 오브젝트를 만들고 벽에 닿으면 사라지도록 설정해보고9. PrefabPrefab이라는..
-
게임개발 2일차 (함수, struct, class, 추상화, 다형성, 상속)게임 개발 2025. 5. 24. 12:07
c#의 함수 인자 전달에는 값 전달, ref 전달, out 전달이 있다.값 전달 코드를 적어보자.void Square (int n) { n = 5; return;} void Start(){ int x = 3; Debug.Log(x); Square(x); Debug.Log(x);}간단한 x=3으로 설정하고 출력한 후 값을 5로 설정하는 함수에 들어갔다가 다시 출력하는 코드다.이렇게하면 3, 3이 출력된다. 3이라는 값이 전달되고 5로 바뀌었지만 복사본이 바뀐거기 때문에 원본은 그대로기 때문이다. ref 전달을 보자. void Square(ref int n)과 Square(ref x)로 바꿔보자.결과는 3, 5다. ref 전달은 변수가 저장되어 있는 장소와 값을 전달하기 때문에 ..