본문 바로가기

유니티 3D기본(Roll A Ball)

17. 오디오 넣고 재생하기 유니티 상단 메뉴 -> Window -> Asset Store에서 에셋스토어에 접속할 수 있습니다. 물론 그냥 구글에 쳐도 나옵니다. 무료 에셋을 체크하면 편하게 볼 수 있습니다. 아래 Casual Game Sounds 에셋을 클릭하고 다운로드 합니다. 아까의 상단메뉴 Window -> Package Manager에서 다운받은 에셋들을 관리할 수 있습니다. Project에 쓸 에셋을 우측하단에 Import를 눌러 불러와줍니다. 그럼 이렇게 Project에 내가 Import한 에셋 폴더가 생깁니다. 이제 오디오를 재생할 오브젝트에 오디오 컴포넌트를 넣어줍니다. 저는 PlayerBall에 오디오 컴포넌트를 넣어주겠습니다. Project에 있는 오디오 파일 중 하나를 AudioClip에 드래그 앤 드랍하거나,.. 더보기
16. 아이템 먹기 구현 플레이어 공이 아이템을 먹고, 점수가 1점씩 증가하는 걸 구현해 보겠습니다. 우선 PlayerBall 스크립트에 itemCount 변수를 선언합니다. PlayerBall 소스코드 public int itemCount; Item 소스코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Item : MonoBehaviour { public float rotateSpeed; void Update() { transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime, Space.World); } void OnTriggerEnter(Collider othe.. 더보기
15. 공중에 떠 있는 아이템 만들고 회전시키기 아무 오브젝트를 하나 만들어주고, C#스크립트를 만들어 넣어줍니다. 소스코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Item : MonoBehaviour { public float rotateSpeed; void Update() { transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime, Space.World); } } Rotate함수 2번째 매개변수로 준, Space.World는 오브젝트의 좌표계를 World좌표계로 정함을 말합니다. defalut 값은 Local입니다. 따라서 아무것도 적지않거나, Space.Self는 Local.. 더보기
14. 점프 및 연속 점프 방지 저번 소스 코드와 이어집니다. bool 타입의 isJumping이라는 변수를 사용해 연속 점프를 방지했습니다. 소스코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerBall : MonoBehaviour { Rigidbody rigid; public float jumpPower; //점프 높이 변수 선언 bool isJumping; // 점프 유무 변수 선언 void Awake() { rigid = GetComponent(); jumpPower = 10; //초기화 isJumping = false; //초기화 } void FixedUpdate() { float x = Input.. 더보기
13. 공 굴리기 간단하게 공과 바닥 오브젝트 생성하고 각각의 Material을 만들어 줬습니다. 그리고 C# 스크립트를 생성해서 공에게 줬습니다. 소스코드 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerBall : MonoBehaviour { Rigidbody rigid; //rigid 컴포넌트 가져오기 void Awake() { rigid = GetComponent(); //초기화 } void FixedUpdate() { float x = Input.GetAxisRaw("Horizontal"); float z = Input.GetAxisRaw("Vertical"); Vector3 move =.. 더보기
12. 게임 인터페이스 만들기 (UGUI) Hierarchy에서 우클을 하면 UI 탭이 따로 있습니다. 먼저 캔버스를 생성합니다. * Canvas : UI가 그려지는 도화지 역할인 컴포넌트 그 후 상단에 2D를 누르면 Scene 창이 2D모드로 바뀝니다. 이제 캔버스 안쪽으로 UI를 생성하면 됩니다. 1. Text Text : 텍스트 입력 Font : 폰트 Font Style : 폰트 굵기 Font Size : 글씨 크기 Line Spacing : 줄 간격 Alignment : 글씨 정렬 Horizontal Overflow : 글씨가 ui width보다 커 넘칠 때 어떻게 할지 조정 Vertical Overflow : 글씨가 ui height보다 커 넘칠 때 어떻게 할지 조정 Color : 글씨 색깔 2. Image 아까처럼 UI Image를 생.. 더보기
11. 물리 충돌 이벤트 물리 충돌 이벤트를 알아보겠습니다. 크게 두가지 방식으로 나뉩니다. 1. 물리적 충돌 감지 - OnCollisionEnter : 물리적 충돌이 시작할 때 - OnCollisionExit : 물리적 충돌이 끝날 때 - OnCollisionStay : 물리적 충돌이 감지되고 있을 때 2. 콜라이더 겹침 감지 - OnTriggerEnter : 콜라이더 겹침이 시작할 때 - OnTriggerExit : 콜라이더 겹침이 끝날 때 - OnTriggerStay : 콜라이더가 겹치고 있을 때 물리적 충돌이란? - 말 그대로 오브젝트와 오브젝트가 그냥 물리적으로 충돌하는 걸 말합니다. 콜라이더 겹침이란? - 오브젝트엔 콜라이더 컴포넌트가 있습니다. 이 콜라이더가 다른 콜라이더와 겹쳤을 때를 말합니다. 우선 예제를 위해 .. 더보기
10. 힘을 이용하여 물체 움직여보기 (velocity, addForce) 오브젝트를 힘을줘서 움직이려면 Rigidbody 컴포넌트가 필요합니다. 스크립트에서 Rigid 컴포넌트를 가져옵니다. 항상 변수는 선언 -> 초기화 -> 호출 과정을 거치는게 좋습니다. public class MyBall : MonoBehaviour { Rigidbody rigid; //선언 void Start() { rigid = GetComponent(); //초기화 //GetComponent는 자신의 T타입 컴포넌트를 가져온다. 안에는 가져올 컴포넌트의 타입 적기 } void FixedUpdate() { //호출 코드 } } 소스 코드 rigid는 보통 물리와 연관된 코드기 때문에 FixedUpdate에 적는게 권장됩니다. 오브젝트 무게가 무거우면(Mass), addForce를 쓰더라도 무게에 비해.. 더보기