유니티/유니티 메인
-
충돌판정유니티/유니티 메인 2024. 3. 4. 22:27
물리엔진을 위한 충돌판정 조건은 2가지가 있는데 1. 둘중 하나는 리지드바디 컴포넌트가 있어야한다 2. 두 객체 모두 콜라이더가 있어야한다. 두 조건이 만족할시 충돌판정이 이루어진다 충돌에는 두가지의 종류가 있다 1. OnCollision 일반 충돌 -일반적인 콜라이더를 가진 두 게임 오브젝트가 충돌할때 자동실행. -충돌한 콜라이더는 서로 통과하지 않고 밀어냄 OnCollisionEnter (Collosion collision) : 충돌한 순간 OnCollisionStay (Collosion collision) : 충돌하는 동안 OnCollisionExit (Collosion collision) : 충돌한뒤 분리되는 순간 2. OnTrigger 트리거 충돌 -두 오브젝트의 콜라이더 중 최소 하나가 트리거..
-
가까운 적 찾기유니티/유니티 메인 2024. 2. 28. 00:51
오늘은 키보드 버튼에 따라 3D 오브젝트를 이동시키는 스크립트 사정거리 안에 들어오면 적을 감지하는 스크립트 여러 적이 있을때 가장 가까이 있는 적을 출력하는 스크립트 크게 총 3가지의 중요 스크립트를 구현해보겠다 우선 각각 Player와 Monster의 이름으로 빈공간에 각각 맞는 프리펩을 넣어준다 이번에는 상속을 이용하기보다는 여러개의 컴포넌트를 용도에 따라 분류하여 사용하도록 미리 만들어주었다 우선 키보드를 눌렀을때 인식해줄 CInput 스크립트에 코드를 넣어주자 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CInput : MonoBehaviour { public Vector3 d..
-
직렬화를 이용하여 저장 객체 저장유니티/유니티 메인 2024. 2. 15. 18:02
우선 간단하게 json 형식으로 파일을 만들어준뒤 Resouces 폴더 안에 넣어준다 using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class Dediablo : MonoBehaviour { void Start() { var asset = Resources.Load("Diablo"); string json = asset.text; Debug.Log(json); Diablo_Data data = JsonConvert.DeserializeObject(json); Debug.LogFormat("=> {0}, {1}, {2}, {3},..
-
json 응용유니티/유니티 메인 2024. 2. 14. 15:47
변하는 데이터 : Info.cs 사용자에 의해 값이 변하는 데이터 ex) 무기의 공격력, 유저의 캐릭터 레벨 변하지 않는 데이터 : Data - 엑셀에서 데이터를 관리 ex)밸런스 데이터, 게임에서 설정되어 있는 데이터 ------------------------------------------------------------------ 이 변하지 않는 Data를 json으로 가공하려한다. json에 대한 설명은 아래 링크에 상세히 적혀있다 json 생각보다 의미 자체나 활용은 어렵지 않지만 중요한 내용이기에 꼭 확실하게 짚고 넘어가야하는 json이다 json : 웹이나 네트워크에서 서버와 클라이언트 사이에서 데이터를 주고 받을 때 사용하 sangeun00.tistory.com 변하지 않는 데이터 값을 ..
-
레벨 디자인, Debug.DrawRay, RayCast, RayCastHit유니티/유니티 메인 2024. 2. 7. 00:44
우선 카메라와 스테이지를 넣은뒤 위치나 방향을 조절한다 2D는 어떤지 모르겠는데 3D는 기왕이면 오브젝트도 깔끔한 위치에 배치하는것이 가장 베스트인것같다 내가 이걸 신경안쓰고 오브젝트 아무렇게나 놓았다가 고생하고 다시 만드는중이다 2D와 달리 3D에서는 기본적으로 라이트가 제공된다. 이번게임은 그림자가 이용되는 게임이기에 라이트를 조절해보자 Light를 선택하고 바로 위에서 직빵으로 빛을 비춰야하기 때문에 Rotation X축을 90도로 맞춘뒤 빛이 너무 강하지 않게 Intensity를 0.7로 내려주자 그리고 바구니를 배치해주자. 혹시 바구니의 그림자가 너무 부자연스럽다면 설정창에서 조절 가능하다 Edit - Project Setting - Quality - Shadow Distance : 30 바구니..
-
3D(Terrian, 파티클, Ray 클래스)유니티/유니티 메인 2024. 2. 5. 10:56
Terrian = 산이나 강 등 지형을 간단히 색을 칠하듯 만들수 있는 기능. 지형과 마찬가지로 잔디나 모래, 3D 나무나 풀도 색을 칠하듯 심을수 있다 Hierarchy 창에서 3D Object - Terrian 선택해서 추가. 그럼 커다란 판 하나가 생성된다 Terrian은 일종의 큰 그림판 같은 느낌이다. 이 판 안에서는 마음대로 변형하고, 재질을 입혀 지면을 만들수 있다 Ctrl + Shift + F = 현재 보고 있는 위치로 카메라 위치를 가져오는 단축키(카메라 선택후 눌러야 함) Terrian을 선택후 Inspector창에서 두번째 Paint Terrian을 선택후 Raise or Lower Terrian을 선택 그럼 Scene창에서 마우스를 갖다댄 위치에 조금 무언가 올라온게 보인다 Insp..
-
물리엔진, 애니메이션, 씬변환유니티/유니티 메인 2024. 2. 5. 03:02
고양이를 올린뒤 rigidbody 2D와 box 콜라이더 추가 rigidbody 2D : 2D 한정 오브젝트에게 중력을 적용한다 Box Collider : 충돌판정을 위한 콜라이더 구름에게도 충돌판정을 위한 박스콜라이더를 입히면 게임 실행시 구름위에 고양이가 앉는걸 볼수있다 이렇게 Circle 콜라이더까지 추가해서 더 사실적으로 충돌판정을 만들수 있으나 정말 정교하게 만들지 않는다면 미끄러 넘어질수 있다 그럴땐 rigidbody의 Constrains로 들어가 축을 고정시킬수 있다 어느 축을 고정시키고 싶은지 알고 싶다면 3D 모드로 들어가 확인할수 있다 만약 구름에게도 rigidbody를 추가하지만 중력의 작용을 받고 싶지 않다면 Body Type에서 Kinematic을 선택하면 된다 이번에는 스페이스바..
-
프리팹, 충돌판정유니티/유니티 메인 2024. 2. 4. 19:27
1. 오브젝트를 배치해준다 using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControl : MonoBehaviour { void Update() { if (Input.GetKeyDown(KeyCode.LeftArrow)) { transform.Translate(-3, 0, 0); } if (Input.GetKeyDown(KeyCode.RightArrow)) { transform.Translate(3, 0, 0); } } } 2. Playercontrol 스크립트를 작성 후 player 오브젝트에 넣어준다 -> 키를 누를때마다 3,-3씩 이동 Input.GetKeyDown(Key..