본문 바로가기

전체 글

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를 쓰더라도 무게에 비해.. 더보기
9. 실체와 같은 물체 만들기 (5 컴포넌트) 오브젝트를 실체같이 구현하는데 중요한 5개 컴포넌트 (물체 필수 요소) 1. Rigidbody - 중력 구현 2. Collider - 충돌 구현 3. Material - 재질 구현 4. Physics Material - 탄성과 마찰 구현 5. Mesh - 오브젝트 그래픽 구현 Rigidbody Mass : 수치가 높을 수록 충돌이 무거워짐. 무게와 비슷 Use Gravity : 중력을 받을지 말지 결정 Is Kinematic : 외부 물리 효과를 무시. 주로 함정을 만들 때 쓰임 Collider Is Trigger : 다른 콜라이더와 겹침 판단 할지 안할지 Material : Physics Material 파일을 로드 Center : 콜라이더 중심점을 설정 Radius : 콜라이더 반지름을 설정 Mate.. 더보기
자동완성으로 나오는 private 생략하기 자동완성으로 붙어나오는 private 키워드를 생략해보겠습니다. VS 상단 메뉴 도구 -> 옵션 -> Tools for Unity 탭 -> 유니티 메시지 범위를 Default로 바꿔줍니다. 확인을 누른 후 빠져나갑니다 private가 안나오는지 체크합니다. 정상작동 확인! 더보기
8. Time.deltaTime (델타타임) 델타타임은 사용자의 컴퓨터 성능에 따라 변하는 값입니다. 유니티 라이프 사이클 글에서 Update함수가 1초에 프레임 수 만큼 실행된다고 말했습니다. 그런데 이 프레임은 컴퓨터 성능에 의해 결정되므로, 컴퓨터 성능이 낮다면, 프레임 역시 낮고, 반대로 높다면 프레임 또한 높아집니다. 이렇게 되면 Update 함수의 호출 횟수가 달라지기 때문에, 멀티플레이를 할 때 심각한 문제가 생깁니다. 카트라이더를 한다고 가정해 봅시다. 앞으로 전진하는 코드가 Update 함수에 있다고 하면, 고성능 유저는 Update에 있는 주행코드가 1초에 120번 실행돼 같은 시간에 저성능 유저에 비해 훨씬 멀리 갈 것입니다. 이러한 갭을 메꿔주는 것이 델타타임입니다. 델타타임은 60프레임의 경우 1/60 같은 값으로 정해집니다.. 더보기