[Day 4] Flappy Bird Tutorial 3
2024. 11. 10. 03:40
오블완 챌린지 4일차

직장 동료 결혼식까지 3주나 남았는데
블랙 원피스 산다고 알리 켰다가
돈을 신나게 쓴 GamJia 입니다
어제 강의에 이어서
Flappy Bird를 만들어 보겠습니다

Pipe를 Scene에 배치하고
위의 Pipe는 Vec3(0,4,0)
아래 Pipe능 Vec3(0,-4,0)로
이동 시켜주세요
Flappy Bird는 Pipe에 부딪혀도
죽기 때문에 어제 바닥에 적용한 것 처럼
Box Collider2D와 Kinematic Rigidbody를
적용 해주도록 하겠습니다

Pipe의 설정이 완료 됐다면
빈 상위 객체의 자식으로 넣어주세요
여기도 동일한 Component를 추가해줄게요
여기서 가장 중요한건
Is Trigger를 true로 설정 해주는겁니다
저 Collider는 캐릭터가 기둥 사이를 지나갔는지
확인하고 그에 따라 점수를 추가 할 예정입니다
Type | 설명 |
Collision Collider | 물리적 충돌을 감지하고 반응하기 위한 콜라이더입니다. 오브젝트가 서로 부딪힐 때 반발이나 멈춤 같은 실제 물리 효과가 적용됩니다. OnCollisionEnter() 같은 메서드를 사용합니다. |
Trigger Collider |
물리적 충돌을 무시하고, 오브젝트가 겹쳤는지 감지하기 위한 콜라이더입니다. 예를 들어, 캐릭터가 특정 구역에 들어왔을 때 이벤트를 발생시키고 싶을 때 사용합니다. OnTriggerEnter() 같은 메서드를 사용합니다.
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Pipe : MonoBehaviour
{
private float speed=1.5f;
void Update()
{
transform.position+=Vector3.left*speed*Time.deltaTime;
// 현재 객체의 위치를 왼쪽으로 speed 속도로 이동 시킵니다
}
}
왼쪽으로 계속 이동하는
Pipe용 Class를 만들어주고
Add Component로 추가해줄게요

게임을 실행해보니
왼쪽으로 잘 이동하는걸 확인했습니다
하지만 Pipe는 여러개면서
제각각의 높이가 다 다릅니다

일단 현재 Pipe 객체를
Prefabs 폴더에 이동시켜
Prefab으로 만들어 주겠습니다
Prefab으로 만들어줌으로써 저 Object는
언제든지 복제해서 사용할 수 있는,
재사용 가능한 Object가 된 겁니다
Prefab 변환이 완료 됐다면
Scene 객체는 지워주겠습니다


Pipe는 0부터 2 사이의 랜덤한
높이에서 생성되면 될 것 같습니다
그리고 Pipe는 가운데에서 생성되지 않죠
오른쪽 안보이는 공간에서 나타나기 때문에
생성 위치는 Vec3(4,(-0에서 2 사이),0)이면 될 것 같습니다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PipeManager : MonoBehaviour
{
[SerializeField] GameObject pipe; // pipe Prefab을 지정
void Start()
{
StartCoroutine(SpawnPipeCoroutine());
}
IEnumerator SpawnPipeCoroutine()
{
while (true)
{
Vector3 spawnPosition = new Vector3(4, Random.Range(0, 2f), 0);
// 생성 위치를 X=4 / Y=0~2 사이 랜덤 값 / Z=0으로 정합니다
GameObject newPipe = Instantiate(pipe, spawnPosition, Quaternion.identity);
Destroy(newPipe, 5f); // 5초 후 파이프 삭제
yield return new WaitForSeconds(2.5f);
// 2.5초 대기
}
}
}
빈 객체를 생성 해준 다음
2.5초에 한 번씩 랜덤 위치에
pipe를 생성하고 5초 뒤에 destroy
하는 Component를 연결해줄게요
중간에 보이는 Instantiate는
Unity에서 Object(Prefab)를
복제하여 새로운 인스턴스를 생성하는 함수입니다.
https://docs.unity3d.com/ScriptReference/Object.Instantiate.html
Unity - Scripting API: Object.Instantiate
This function makes a copy of an object in a similar way to the Duplicate command in the editor. If you are cloning a GameObject you can specify its position and rotation (these default to the original GameObject's position and rotation otherwise). If you
docs.unity3d.com

저장 후 실행해보니 Pipe가
랜덤 높이에서 일정하게 생성된걸
확인할 수 있었습니다!

오늘은 여기까지 하고
GitHub에 Commit하는걸로
마무리 하겠습니다!
블로그 Tab Menu에
GitHub Link도 걸어두었으니
게임이 잘 실행이 안되거나
참고하고 싶을 때 언제든지
GitHub에서 확인하세요!
감사합니다!!
'Challenge' 카테고리의 다른 글
[Day 6] Flappy Bird Tutorial 5 (0) | 2024.11.12 |
---|---|
[Day 5] Flappy Bird Tutorial 4 (4) | 2024.11.11 |
[Day 3] Flappy Bird Tutorial 2 (6) | 2024.11.09 |
[Day 2] Flappy Bird Tutorial 1 (1) | 2024.11.08 |
[Day 1] Unity & GitHub Setting (4) | 2024.11.07 |