유니티
-
라이트맵유니티/유니티 기능 2024. 3. 8. 13:09
컴퓨터 그래픽에서 사용하는 라이팅은 굉장히 무겁고 연산비용이 비싸다 그렇기에 유니티는 라이팅 데이터 에셋을 사용하여 라이팅 효과의 실시간 연산량을 줄이며 씬에 변화가 감지될때마다 매번 새로운 라이팅 데이터 에셋을 생성한다. 그리고 이 라이팅 데이터 에셋에 포함된 주요 데이터 중 하나가 라이트맵이다 라이트맵이란 "오브젝트가 빛을 받았을 때 어떻게 보일지" 미리 그려둔 텍스쳐로, 해당 정보를 텍스쳐 형태로 저장한다 실제로 빛 연산 정보를 사전에 계산하여 텍스쳐에 담아내는데 이 과정을 Bake 라고 한다 라이팅맵을 이용하면 실시간 라이팅 연산을 줄여주는 동시에 빛의 현상을 표현할 수 있다 (실시간으로 빛을 내는 오브젝트는 없음. 빛을 내는것처럼 보이는것뿐) 이제 실제 라이팅 맵을 쓰는 법을 알아보자 Windo..
-
TileMap유니티/유니티 기능 2024. 3. 7. 18:09
가장 먼저 Package Manager에서 2D Tilemap Editor가 설치되었는지부터 확인한다 타일맵으로 사용하기에 적합한 이미지를 찾는다. 기왕이면 크기가 전부 일정한게 좋다 여기서부터는 Multiple Sprite할때와 과정이 똑같다. 설정 마친뒤 Sprite Editor를 열어주자 Multiple sprite 아직 잘리지 않고 한 이미지에 이어져있는 이미지를 프레임에 따라 하나씩 일정하게 잘라주자 1. 우선 이미지를 선택후 Sprite Mode에서 Multiple로 선택해준다 그리고 밑에 있는 Sprite Editor를 눌러 Spr sangeun00.tistory.com 여기까지는 전에 배운 Multiple sprite와 똑같다. 이제 이렇게 잘린 이미지들을 타일맵으로 이용해보겠다 이제 본격..
-
Inspector창에서 변하지 않는 변수값유니티/오류&문제점 2024. 3. 6. 22:54
위 코드에서 speed를 10으로 설정해주었고 Inspector창에서도 똑같이 뜬다 근데 코드에서 값을 수정하고 저장을 해도 수정한 값이 적용되지 않는다 Inspector창에서 수정을 해줘야 그제서야 변한값이 적용되는것을 알 수 있다 별거 아니긴한데 전부터 이것때매 굉장히 헷갈린적이 많다. 찾아보니 이렇다고 한다 아무튼 해결방법은 해당 컴포넌트의 오른쪽 상단 Reset 버튼이라고 하는데 그럴때마다 오브젝트는 또 다시 끌어다 옮겨놔야한다고 한다 다른 방법으로는 변수를 선언할때 앞에 public을 붙이지 않으면 된다고 한다(public 제외한 다른것들은 전부 가능) 기왕이면 변수값이 잘 변하지 않게 하던가, 값이 변할것같은 변수라면 애초에 public을 안붙여주는걸로 하자
-
Multiple sprite유니티/유니티 기능 2024. 3. 5. 18:11
아직 잘리지 않고 한 이미지에 이어져있는 이미지를 프레임에 따라 하나씩 일정하게 잘라주자 1. 우선 이미지를 선택후 Sprite Mode에서 Multiple로 선택해준다 그리고 밑에 있는 Sprite Editor를 눌러 Sprite Editor 창에 들어온다 2. Sprite Editor창에 들어와 편집창에서 Slice를 클릭해 Type을 Grid By Cell Size를 선택해준뒤 사이즈는 일정하게 분배해준다 그리고 다시 돌아와 Apply를 눌러 적용해주면 된다
-
충돌판정 오류유니티/오류&문제점 2024. 3. 5. 16:00
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControl : MonoBehaviour { private Rigidbody rigidbody; public float speed = 8f; void Start() { rigidbody = GetComponent(); } void Update() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); float xspeed = x * speed; float zspeed = z * speed; Vector3 newvelo = new Vector3(x..
-
충돌판정유니티/유니티 메인 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. 24. 16:44
1. 홀로그램을 깜빡이게 해보자 깜빡이는 주기는 _speed라는 이름으로 입력받은 range로 조절할 수 있다 void surf (Input IN, inout SurfaceOutput o) { fixed4 c = tex2D(_MainTex, IN.uv_MainTex); o.Emission = _Color.rgb; //rim float ndot = saturate(dot(o.Normal, IN.viewDir)); float rim = pow(1- ndot, _RimPow); o.Alpha = rim * sin(_Time.y * _Speed); } 윗부분은 사실 다 아는 내용이니까 넘어가고 출력파트만 보겠다 o.Alpha = rim * sin(_Time.y); 이게 핵심이다. 우선은 깜빡이게 하기 위해서는 ..