사생활 보호 설정
https://gamjia.tistory.com
Updated News
Mini Rooms
답글수 [0]
What Friends Say
한마디로 표현해봐~
1촌평 관리
[Day 3] Flappy Bird Tutorial 2
GamJia 2024. 11. 9. 03:20
오블완 챌린지 3일차
늘어지게 자다가 일어나서블로그 쓰고 기타연습 할 생각에신난 GamJia 입니다 어제 강의에 이어서Flappy Bird를 만들어 보겠습니다
어제 분리한 Sprite들을 배치해보는데캐릭터가 가려져서 안 보이는 상황입니다 물론 가린게 바닥이라 밑으로 내리면당연히 보이겠지만 Sprite Renderer의Order in Layer를 수정해서 캐릭터가보일 수 있게 해주겠습니다 Order in Layer의 숫자가 클 수록위쪽 Layer에 배치 됩니다
Sprite들을 보면 날개 모양이 조금씩 다른Flappy Bird들이 있는데요 여러개를 ctrl로 선택 후 캐릭터에 드래그 앤 드롭 해볼게요 쉽게 Animation과 Animator를생성할 수 있는 방법이랍니다
어제 미리 세팅해둔 Asset/Animator 폴더에Fly라는 이름의 Animation을 생성해줄게요 Animation을 생성해주니 현재 객체의 이름으로Animator가 생성된걸 확인할 수 있습니다 Animation은 진짜 Animation 그 자체이고Animator는 Animation들을 관리하는 Component 입니다
Window / Animation을 열어Animation Tab을 활성화 해주겠습니다여기서 객체의 Animation들을재생하고 확인할 수 있습니다
방금 만든 Animation을 확인해봤는데귀엽게 날갯짓을 하고 있습니다! 이제 이 캐릭터에 물리를한번 적용해보겠습니다
Collider란 Object가 충돌할 수있도록 해주는 Component입니다 캐릭터에 일단 Circle Collider 2D를추가해주겠습니다 Collider 뒤에 2D라고 안 적혀있으면3D 객체용 Collider입니다 https://docs.unity3d.com/kr/2018.4/Manual/CollidersOverview.html
콜라이더 - Unity 매뉴얼
콜라이더(Collider) 컴포넌트는 물리 충돌 처리를 위한 오브젝트의 형태를 정의합니다. 콜라이더는 보이지 않는 요소이므로 오브젝트의 메시와 정확히 동일한 모양일 필요는 없으며, 실제로는 게
docs.unity3d.com
원래 Default 중력은 1인데 저는 조금 더 무겁게 줬어요
Collider를 추가했다면 이번에는Rigidbody 2D를 추가해주겠습니다 Rigidbody는 Object에 물리적인특성을 부여하는 Component 입니다 중력이나 힘을 받아서 움직일 수 있게 되고속도와 회전 같은 물리 계산이 적용됩니다 Constraint는 Object의 움직임이나회전을 특정 축에서 고정하는 설정입니다 Freeze Position X를 true로 설정함으로써어떤 물리 충돌을 받아도 X 좌표가변하지는 않습니다
https://docs.unity3d.com/kr/2018.4/Manual/RigidbodiesOverview.html
리지드바디 개요 - Unity 매뉴얼
리지드바디(Rigidbody) 는 게임 오브젝트의 물리적 동작을 가능하게 하는 주요 컴포넌트입니다. 리지드바디가 연결된 오브젝트는 중력에 즉시 반응합니다. Collider 컴포넌트도 하나 이상 추가할 경
방금 내용을 참고해서바닥 Object에는 네모난 모양의Collider(Box Collider)와Kinematic Rigidbody를적용 해주었습니다
Scene을 저장하고 게임을 실행해보니중력을 받아 바닥으로 떨어져바닥의 Box Collider와 부딪힌 모습입니다
Assets / Scripts 폴더에 들어가서우클릭 후 Create / C# Script 하나생성해줄게요 Script 이름은 마음대로 지어도 됩니다저는 Player라고 지었어요
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { private Rigidbody2D rigidbody; private float velocity = 5f; private float speed=4f; void Start() { rigidbody=GetComponent<Rigidbody2D>(); // 현재 객체에 가지고 있는 Rigidbody 2D 정보를 가져옵니다 } void Update() { if (Input.GetMouseButton(0))// 0=마우스 왼쪽, 1=마우스 휠, 2=마우스 오른쪽 { rigidbody.velocity=Vector2.up*velocity; // 현재 rigidbody에 위쪽 방향으로 velocity만큼 힘을 가할게요 } } void FixedUpdate() { transform.rotation=Quaternion.Euler(0,0,rigidbody.velocity.y*speed); // 현재 Object의 속도(velocity.y)에 speed를 곱한 값을 각도로 설정 } }
마우스 좌 클릭을 하면 현재 객체의Rigidbody에 위쪽 방향으로 힘을 가하는코드를 작성했습니다 velocity에 더 높은 수치를 입력하면더 위로 올라가겠죠???
방금 입력한 코드를 저장하고Add Component를 클릭해서방금 만든 Component를 넣어주겠습니다
파닥파닥 마우스를 클릭하면 위쪽으로물리 힘을 주면서 그 힘*speed에 따라z축이 잘 rotation하고 있습니다
오늘은 여기까지 하고GitHub에 Commit하는걸로마무리 하겠습니다! Commit Log는 잘 적으셨나요? 욕이나 대충 쓴 Log는 입사 과정의마이너스 요소가 될 수 있기 때문에신중하게 적는 것이 중요합니다!
감사합니다!!