Short Cake
8PM - Animal Crossing Wild World

사생활 보호 설정

https://gamjia.tistory.com

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로 선택 후
 캐릭터에 드래그 앤 드롭 해볼게요
 
쉽게 AnimationAnimator
생성할 수 있는 방법이랍니다
 


 
어제 미리 세팅해둔 Asset/Animator 폴더에
Fly라는 이름의 Animation을 생성해줄게요
 
Animation을 생성해주니 현재 객체의 이름으로
Animator가 생성된걸 확인할 수 있습니다
 
Animation은 진짜 Animation 그 자체이고
AnimatorAnimation들을 관리하는 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 좌표가
변하지는 않습니다
 

Type 설명
Dynamic 기본 모드로, 중력이나 외부 힘에 자유롭게 반응합니다.
캐릭터나 움직이는 물체처럼 물리적으로 상호작용이 필요한 오브젝트에 사용합니다.
Kinematic 중력이나 외부 힘의 영향을 받지 않지만, 코드로 위치와 회전을 변경할 수 있습니다. 이동은 필요하지만, 물리 엔진과의 충돌 반응은 없을 때 사용합니다. 예를 들어, 움직이는 플랫폼이나 애니메이션이 있는 오브젝트에 적합합니다.
Static 완전히 고정된 상태로 물리적으로 움직이지 않아요. 충돌은 감지하지만 스스로 움직이지 않아서, 바닥이나 벽 같은 고정된 오브젝트에 사용합니다.

 
https://docs.unity3d.com/kr/2018.4/Manual/RigidbodiesOverview.html

 

리지드바디 개요 - Unity 매뉴얼

리지드바디(Rigidbody) 는 게임 오브젝트의 물리적 동작을 가능하게 하는 주요 컴포넌트입니다. 리지드바디가 연결된 오브젝트는 중력에 즉시 반응합니다. Collider 컴포넌트도 하나 이상 추가할 경

docs.unity3d.com

 


 
방금 내용을 참고해서
바닥 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는 입사 과정의
마이너스 요소가 될 수 있기 때문에
신중하게 적는 것이 중요합니다!
 


감사합니다!!

 


 

'Challenge' 카테고리의 다른 글

[Day 6] Flappy Bird Tutorial 5  (0) 2024.11.12
[Day 5] Flappy Bird Tutorial 4  (4) 2024.11.11
[Day 4] Flappy Bird Tutorial 3  (8) 2024.11.10
[Day 2] Flappy Bird Tutorial 1  (1) 2024.11.08
[Day 1] Unity & GitHub Setting  (4) 2024.11.07