일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- protobuf 란?
- unity 게임
- 크래프톤
- unity 개발
- 오픽 im1
- unity 강의
- 유니티 미연시
- node.js
- 게임 개발
- unity
- 오픽 im1 5일
- 유니티 스토리
- 유니티 퀘스트
- 유니티 독학
- 게임 독학
- 유니티 체스
- 크래프톤 정글 게임 랩
- unity 게임 개발
- unity 공부
- 유니티
- 크래프톤 정글랩
- protobuf란
- 크래프톤 정글 게임랩
- Unity Chess
- ETRI 연구연수
- Unity 독학
- unity 설치
- 게임 개발 독학
- 크래프톤 게임 정글 랩
- 유니티 대화
- Today
- Total
하참이의 아이디어노트
Unity 강의 3일차 (2) - 피자 날리기 게임 2 본문
본 강의는 다음 문서를 참고하여 제작하였습니다. 자세한 내용은 하단 링크를 참조하시거나 댓글로 질문 남겨주시면 성심성의껏 답변 드리겠습니다.
2.2강 - 먹이 발사하기 - Unity Learn
개요: 이 수업에서는 플레이어가 씬을 가로질러 날아가는 발사체를 발사하도록 구현해 보겠습니다. 먼저 발사체를 앞으로 보내는 새 스크립트를 작성합니다. 다음으로, Unity의 새로운 주요 개념
learn.unity.com
지난 시간에는 피자를 날려보았죠. 그러나 피자를 날리면 하이어라키창에 지저분하게 피자가 쌓이는 것을 볼 수 있을 것 입니다.
화면에서 나가면 뭐.. 상관 없는거 아닐까요?
아닙니다! Unity는 엔진으로써 화면에 없는 요소들까지 전부 계산합니다. 그러므로 피자를 계속 날리면 날릴수록 게임은 지저분해지고 컴퓨터 사용량은 많아지며 한계에 다다를 경우 게임이 느려지면서 터지게 될 것 입니다.
그럼.. 탄환수를 제한하죠!
참신한 방법입니다. 게임의 탄환을 제한하는 것은 게임을 하드모드로 즐길 수 있는 방법이겠네요. 하지만 저희는 하드모드 게임을 즐기러 온것이 아닌 게임 제작법을 배우러 온 것입니다.
피자가 화면을 나갔을 경우, 다시 돌아올 일이 없으므로 피자 오브젝트를 제거하면 되겠습니다. 이는 캐릭터가 화면 밖으로 나가지 못하게 한 것과 비슷한 맥락일 것입니다.
DestoryOutOfBounds 스크립트를 생성하고 피자 컴포넌트에 추가합니다.
DestroyOutOfBounds 스크립트를 다음과 같이 작성합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DestroyOutOfBounds : MonoBehaviour
{
private float topBound = 30;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (transform.position.z > topBound)
{
Destroy(gameObject);
}
}
}
topBound, 즉 상위 제한을 30으로 설정하고, 피자가 해당 임계점을 넘으면 파괴되도록 합니다.
Destroy()는 유니티 함수로 인자로 설정한 게임 오브젝트를 씬에서 제거합니다. 즉, gameObject는 본인이 제거되는 것이고, 다른 게임오브젝트 인자를 가지고 있다면 다른 게임 오브젝트도 제거할 수 있겠네요.
저장하고 게임을 실행해서 피자를 날려보면 피자가 화면 밖으로 나갔을 때, 하이어라키창에서 피자가 잘 사라지는 것을 확인할 수 있습니다.
이제 동물을 프리팹으로 만들고 동물도 움직이도록 해보겠습니다.
동물들을 Y축을 기준으로 180도 회전하여 아래를 보도록 만듭니다.
동물들도 랜덤 위치에 생성이 되면 앞으로 나아가는 역할이겠네요! 동물들에게도 MoveForward 스크립트 컴포넌트를 추가해줍니다.
또한 동물들도 화면 밖에 벗어나면 제거되야겠네요. DestroyOutOfBounds를 추가합니다.
하지만 DestroyOutOfBounds의 임계점은 Z축의 양수, 즉 맵의 윗쪽만 해당합니다.
아래쪽의 임계점을 추가하고, 임계점을 넘으면 게임 오브젝트를 제거하기 위해 코드를 추가합니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DestroyOutOfBounds : MonoBehaviour
{
private float topBound = 30;
private float lowerBound = -10;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (transform.position.z > topBound)
{
Destroy(gameObject);
} else if (transform.position.z < lowerBound)
{
Destroy(gameObject);
}
}
}
게임을 시작하면 동물들이 밑으로 내려오고 제거되는 것을 확인 할 수 있습니다.
이제 동물들을 프리팹화하고 씬에서 제거합니다. 오리진 프리팹으로 변경하는 것을 잊지 맙시다.
게임의 요소다운 느낌이 점점 생기고 있습니다.
다음시간에는 무작위 동물을 생성해보도록 하겠습니다. 감사합니다.
'Unity > Unity 기초' 카테고리의 다른 글
Unity 강의 3일차 (4) - 피자 날리기 게임 4 (0) | 2025.01.17 |
---|---|
Unity 강의 3일차 (3) - 피자 날리기 게임 3 (0) | 2025.01.17 |
Unity 강의 3일차 (1) - 피자 날리기 게임 1 (0) | 2025.01.17 |
Unity 강의 2일차 (4) - 비행기 프로그래밍 (2) | 2025.01.16 |
Unity 강의 2일차 (3) - 주행 준비 (0) | 2025.01.16 |