유니티 바닥 만들기 - yuniti badag mandeulgi

  • 태그
  • 링크 추가
  • 방명록

  • 전체글보기 (47)
    • 활동(일상) (8)
    • 언리얼(루아) (1)
    • 유니티(C#) (10)
    • (2)
    • C (3)
    • 영상제작(프리미어+에펙) (2)
    • 프리미어 프로 (2)
    • 에프터 이펙트 (3)
    • C++ (2)
    • JavaScript(웹프) (4)
    • AutoHotKey(오토핫키) (1)
    • 게임 관련 수학 (0)
    • IT 관련 기타 등등 (5)
    • JAVA (1)

카테고리

지난번에 말했듯이 적과 바닥을 만들 것이다.

우선 스프라이트를 꺼내 주자.

바닥이 될 스프라이트와 적이 된 스프라이트를 꺼내야 한다.

유니티 바닥 만들기 - yuniti badag mandeulgi
바닥 스프라이트 Square하나와 적 스프라이트 Circle을 만들었다.

이렇게 만들었다면,

위치를 잡아주자.

이제

Tag처리를 해주도록 하자.

Tag는 Inspector에서 찾을 수 있다.

유니티 바닥 만들기 - yuniti badag mandeulgi
Add Tag를 누르면 된다.

Tag는 2개를 만들건대, 각각 Enemy와 Ground로 만들었다.

유니티 바닥 만들기 - yuniti badag mandeulgi
플레이어 태그는 그냥 있기때문에 만들필요가 없다.

이제 게임을 실행해 본다면 플레이어가 바닥을 뚫고 떨어질 것이다.

이걸 방지하기 위해 Ground와 Player에 Collider2D를 넣어주자.

유니티 바닥 만들기 - yuniti badag mandeulgi
유니티 바닥 만들기 - yuniti badag mandeulgi

난 플레이어와 Ground가 네모이기 때문에 Boxcollider를 썻다.(도형에 맞는거 쓰면됨, 스프라이트가 그림인 경우가 디자인된 상태인 상황일경우 나는 편하게 boxcollider를 쓴다. 물론 상황에 따라 다르게 해야한다.)

이렇게 만들고 나면 땅을 통과하지 않을 것이다.

이제 적을 만들어 주자.

적도 플레이어와 같이 Rigidbody와 Collider를 넣어주자.

유니티 바닥 만들기 - yuniti badag mandeulgi

이제 Enemy의 스크립트를 짤 시간이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour
{

	public static float HP;
    public static float speed;
    public static float AD;
   Rigidbody2D rigid;
   
    void Start()
    {

        HP = 100;
        rigid = GetComponent<Rigidbody2D>();
        speed = 3;
        AD = 10.0f;

    }
    
     void Update()
    {
    
    }
}

이제 Enemy에 스크립트를 넣어주자.

그리고 게임을 실행하면 Enemy도 안정적으로 바닥 위에 있다.

근데 여기서 플레이어를 움직여 Enemy에 부딪혀보면 이상한 점이 있다.

유니티 바닥 만들기 - yuniti badag mandeulgi
플레이어와 Enemy가 굴러간다.

이걸 해결해야 하는데 방법은 간단하다.

플레이어와 Enemy의 Inspector에 들어가

유니티 바닥 만들기 - yuniti badag mandeulgi

빨간 줄이 쳐 저 있는 Freeze Rotation에 Z를 체크하면 된다.(Enemy도 똑같은 방식으로 고정시킨다.)

그러면 고쳐진다.

다음에는 적 AI를 만들어 보겠다.

**(제가 만들고 있는 게임을 토대로 설명드리는 것입니다. 코딩이 제 스타일이라 참고만 하시는 걸 추천합니다.)**

1. 바닥 오브젝트 만들기. 이후 위치를 0,0,0으로 하기 톱니바퀴에서 리셋버튼을 누르면 된다.
톱니바퀴의 공식 명칭 = gear버튼 or component context menu버튼 이다.

크기(스케일) 을 2,1,2로 변경

Plane의 크기와 유닛단위
plane의 크기는 가로세로 10유닛이다

1유닛은 Cube한 변의 길이이다.
즉 plane의 가로,세로 방향으로 큐브오브젝트를 10개 나열할 수 있다.
위에선 스키일을 2,1,2로 수정하였으니 plane의 가로 세로 길이는 각각 20유닛이 된다.

(참고로 메인카메라의 윗부분이 y축인점을 생각하자. )

유니티 바닥 만들기 - yuniti badag mandeulgi

Meterial : 유니티의 게임오브젝트의 컬러는 머터리얼이 결정한다
 머터리얼을 셰이더와 텍스처가 합쳐진 에셋으로, 오브젝트의 픽셀 컬러를 결정한다.

   텍스쳐 = 스케치,밑그림, 셰이더 = 물감부분 이 둘이 합쳐저 머터리얼

2. 머터리얼을 만들고 바닥오브젝트에 적용해본다.

프로젝트 창에서 에셋에 머터리얼 전용 폴더 하나 생성하고
우클릭으로 머터리얼을 만든다. 이름은 Plane Color로 한다.

유니티 바닥 만들기 - yuniti badag mandeulgi


검은색 바닥을 하려면 알베도를 검은색으로 변경한다
알베도(Albedo)는 반사율이라는 뜻으로 물체가 어떤색을 반사할지 결정한다.
RGB를 (0,0,0)으로 한다.

유니티 바닥 만들기 - yuniti badag mandeulgi


머터리얼을 오브젝트로 드래그드롭 하여 적용한다.

유니티 바닥 만들기 - yuniti badag mandeulgi