응용프로그램 146

Unity2D_UI_Panel, Text, Button 만들기

Panel, text, Button 만들기 판넬은 정리할때 쓰는 상자라고 생각하시면 됩니다. 생선1생선2생선3 저렇게 있는것보다 생선1생선2생선3 요렇게 박스안에 넣는것이 안정감있고 옮기거나 관리하기도 편합니다. Unity에서는 버튼, Text를 일괄적으로 관리할때 사용할 수 있습니다. 파란점을 드래그하면 크기조절이 가능한데 알아서 드래그하고! 하이러키의 판넬을 우클릭한다음 Text와 Button을 만들어 줍니다. Text는 OverFlow로 설정하여 크기조절이 용이하게 설정합니다. Font Size로 글자크기를 알맞게 조절합니다. Aligiment로 가로 세로 가운데 정렬을 합니다. Horizontal Overflow, Vertical Overflow를 Overflow로 설정합니다. 버튼을 만들면 Bu..

Unity2D_UI_Canvas 설정하기

UI Canvas 설정하기 Component -> UI -> Canvas를 눌러서 캔버스를 삽입합니다. 그냥 캔버스르 만들면 요로콤 됨니다. 캔버스르 만들었는데 이제까지 만들었던 맵이랑 차이가 어마어마하죠 ㅡ_ㅡ... 좀 많이 불편하므로 카메라에 캔버스 크기를 맞추겠습니다. Canvas -> Render Mode -> Screen Space - Camera 선택 Render Camera에 카메라 드래그하기 마지막으로 Order in Layer을 2로 설정하여 다른 객체보다 앞에 오도록 합니다.

Unity2D_Player에 카메라 붙이기

Player에 카메라 붙이기 플레이어에 객체에 "Player" 태그를 달아줍시다 아래의 소스를 카메라에 부착합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFollow : MonoBehaviour { private Vector2 velocity; private float smoothTimeY; private float smoothTimeX; public GameObject player; public bool bounds; public Vector3 minCameraPos; public Vector3 maxCameraPos; void Start() { player = Ga..

Unity2D IEnumerator , 점프

IEnumerator , 점프 게임을 제작하다보면 천천히 화면이 어두워진다거나 서서히 높아져야 할때가 있습니다. Update 시점함수에 while같은 반복문을 사용하면 프레임이 너무 빠르게 지나가서 순식간에 일어난 것처럼 처리됩니다. 이럴때 사용하는것이 바로 Corutine입니다. StartCoroutine (함수명); IEnumerator 함수명 { int power=10; while (power >= 1) { power-=10; yield return 지연 값; } } 여기서 지연값에 WaitForSeconds(1f)를 넣으면 1초지연후 다음 프레임에서 호출하는 방식입니다. 이를 활용하여 Jump모션을 만들었습니다. 동그란 객체는 Sprite(그림),Rigidbody2D(물리엔진), Colilisio..

Unity2D 애니메이션 편집하기

애니메이션 편집하기 2분만에 잠깐 그린 막대기와 원으로 만든 애니메이션입니다. 제가 그래픽쪽엔 꽝이라서 그래픽은 포기했습니다. ^-^ 음하핫 ㅡㅜ 잡설은 넘어가고 동그라미와 작대기 하나로 애니메이션을 만들어 보겠습니다. 모두 다 만들려면 시간이 많이 걸리므로 하는 방식만 알려드리겠습니다. 우선 gif에 분해된 캐릭터를 가져옵시다. 이걸로 위의 애니메이션을 만든겁니다. 신기하죠^^? 이것을 자동분할하면. 조금 희미하지만 자~~세하게 들여다보면 네모로 나뉘어져있습니다. 분할된 이미지중 하나를 클릭하면 아래와 같이 표시됩니다. 여기에서 가운데 동그라미는 회전축을 나타냅니다. 이 동그라미가 머리 이므로 이 동그라미를 아래로 드래그하여 회전축을 지정합니다. 이런식으로 몸의 관절을 생각하면서 모두 회전축을 지정해 ..

Unity2D_착지 애니메이션, 충돌체(Collider)

Unity2D_충돌체 처리하기 이번에는 [Unity2D_횡스크롤 게임 지형만들기]에서 다루었던 충돌체(Collider)간의 이벤트를 처리하는 방법을 다뤄보려고합니다. Player와 지형과 닫는 순간 착지를 탁! 하는 순간 앉는 애니메이션이 작동한다면 멋있겠죠? 음 별로 멋있지는 않네요 그래도 어디에 쓰는지는 알겠죠? 총에 맞았을때 데미지를 입히거나, 땅을 딪고 있을때 것거나 아주 다양하게 사용하는것이 바로 트리거 입니다. 충돌체의 이벤트는 3가지가 있습니다. 충돌체와 부딪친 순간 OnTriggerEnter() 충돌체위에 접촉해 잇을 때 OnTriggerStay() 접촉한 충돌체와 떨어질때 OnTriggerExit() 맨 상단의 움짤처럼 땅에 발이 다았을때 착지하는 모션을 만들어 보겠습니다. Player ..

Unity2D_횡스크롤 게임 지형만들기

들어가기전에.... 이전포스팅에서 다루었던 '객체 이동하기'의 Player객체를 활용해서 진행하겠습니다. 기초적인 내용이라 아시는 분들은 넘어가도 상관없지만 처음이신분은 목차로 돌아가기를 눌러서 숙지하고 와주세요~ RigidBody2D 컴포넌트에 Gravity Scale값을 25로 설정합니다.0이라면 플래이어의 공중부양을 보실 수 있습니다. 횡스크롤 게임 지형만들기 3분만에 뚝딱 만든 지형이라고 칭하는 지형하나이 지형을 Scene창에 드래그하면 지형이 들어감을 알 수 있습니다. 문제는 지형이 지형 역활을 하지 않고 단지 그림이라는게 함정입니다. 이를 방지하기 위해서 Unity에서 충돌체를 지원합니다.충돌체와 충돌체가 만나면 통과하지 않고 버티는 거죠.따라서 플레이어와 지형에 충돌체를 삽입합니다. Play..

Unity2D_캐릭터 움직이기

Unity2D_캐릭터 움직이기 GameObject에서 Create Empty를 클릭하고 Player로 이름을 바꿔줍니다. 임의의 그림파일(gif추천)을 객체에 드래그 해 주시고~ Inspector -> Add Component -> Physics 2D를 클릭! 그리고 Rigibody 2D를 클릭! RigidBody2D 컴포넌트에 중력속성값을 0으로 설정합니다.0이 아니면 아래로 떨어집니다. 2D물리컴포넌트를 장착했으니 2D물리컴포넌트를 조작할 스크립트를 작성해 봅시다. 하이라키에서 Player 객체를 클릭 -> Inspector 창의 Add Component 클릭 ->New Script에서 Player로 이름을 지정하고 C# 스크립트를 생성합니다. 생성한 스크립트를 더블클릭하면! C# 소스를 넣을 수 있..

Unity2D_애니메이션 삽입하기

2D애니메이션_애니메이션 삽입하기 Sprites 파일에서 잘라놓은 Gif 조각을 Scene에 드래그합니다. Scene에 선택한 파일을 선택하고 Window메뉴의 Animation을 클릭합니다. Animation 창이 뜨면 Anim파일을 미리 만들어 져있지 않은 이상은 아래와 같은 창이 뜰 것입니다. Create를 눌러줍니다. 저장할 이름을 설정하고 저장을 눌러줍시다. 이제 좌상단에 보면 방금 지정했던 이름이 보일겁니다. 이상태에서 애니메이션을 만들고 시은 조각낸 GIF 조각들을 드래그합니다. 이제 아래의 그림과 같이 gif 이미지들이 보이는데 좌에서 우측으로 이미지가 바뀌면서 애니매이션이 재생됩니다. 여기에 gif 이미지 위쪽에 마름모꼴 도형이 보일텐데요 이것을 조정하면 원하는 시간간격에 애니메이션을 지..

Unity2D_애니메이션제어

Unity2D_애니메이션제어 선택된 그림을 만들어 놓은 Player 객체에 드래그하고 이름정하기저는 PlayerIdle 이라고 지정했습니다. 그리고 아래의 이미지도 똑같이 Player 객체에 드래그하고 이름을 설정합니다. PlayerChop, PlayerHit로 지정했습니다. 이런식으로 작업을 끝내면 아래와 같은 파일들이 생성됩니다Player는 애니메이션 제어창이고PlayerIdle, PlayerChop, PlayerHit는 애니메이션 단위 입니다.여기서 Player를 더블클릭하면 Animator가 활성화됩니다. 이제 Animator창의 좌상단의 Parameters를 클릭하고 +버튼을 클릭후 Trigger을 클릭합니다.이름은 각각 PlayerChop과 PlayerHit로 지정합니다. PlayerIdle ..