용어 Ethernet : Ether (빛의 매질) MAC 주소(Media Access Control Address) : 48 bit로 이루어진 숫자 네트워크 계층(Network Layer) IPv4 (Internet Protocol Version 4) -> IPv6 IP 주소 (32bit, 8bit * 4) ARP (Address Resolution Protocol, 주소 결정 프로토콜) 바꿔주는 프로토콜(형변환?) - IP -> MAC 서브넷 마스크 (Subnet Mask) 같은곳에서 왔는지 알수있는거 AND 비트 연산 Ex ) 255.255.255.0 와 IP를 비교해서 A : 18.17.100.1 -> 18.17.100.0 B : 18.17.100.2 -> 18.17.100.0 C : 18.17.2..
Input System 새로운 조작 시스템을 받아서 사용한다. 이런식으로 설정 대략적으로 WASD 이동과 시점은 마우스 조작과 스틱 조작 두개를 넣어준거 같다. 설정 시 카메라 액션값을 아래 처럼 바꾸지 않을 시 버튼이 초기값이므로 컨트롤 타입을 벡터2 값으로 안 바꿔주면 패드 조작과 마우스 조작 빌딩이 활성화가 안된다. 마우스 조작은 노멀라이즈 벡터2 정규화를 해준다. Ps. +를 누르면 추가된다 /* 하지만 직접 기계를 연결하여 키를 입력 받는게 있다. 자세한건 밑에 링크 Ace Combat Zero: 유니티로 구현하기 #1 : Input (velog.io) 무튼 따라하기니까 이건 배워만 두자 */ 이제 코드로 WASD를 구현해보자. InputHandler.cs using System.Collecti..
Move 새로운 움직임 방식 회전까지 float xAxis = Input.GetAxis("Horizontal"); float yAxis = Input.GetAxis("Vertical"); MoveToDir(new Vector3(xAxis,0, yAxis)); Horizontal, Vertical 유니티에서 제공해주는 방식이다, 움직임 외에 여러가지가 있다. 원래 W,D를 받는 방식과 다르다 회전 코드 if(Input.GetKey(KeyCode.Q)) { transform.Rotate(Vector3.up, -rotSpeed * Time.deltaTime); } if (Input.GetKey(KeyCode.E)) { transform.Rotate(Vector3.up, rotSpeed * Time.deltaT..
uv는 앞에서 설명했듯이 이미지 비율을 찍어주는것이다 밑에 코드를 보면 MeshFilter mf = GetComponent(); Mesh mesh = mf.mesh; mesh.uv = new Vector2[] { new Vector2(0f, 0.5f) , new Vector2(0.5f, 0.5f), new Vector2(0f,1f), new Vector2(0.5f,1f) }; 일단 왼쪽 이미지는 원본이며 오른쪽 이미지가 코드를 작성 후 나온 이미지이며 왼쪽위가 짤린채로 나옵니다. 음수가 없는걸 생각해보면 uv는 사각형 모양으로 자르는 형태로 이미지를 불러옵니다. 순서대로 자른다고 생각합니다. 그러니 맨처음 시작은 왼쪽 위부터 시작인거죠 mesh.uv = new Vector2[] { new Vector2(..
이제부턴 수업 역순으로 올라가는 식으로 적겠습니다. 매쉬를 코드로 생성해볼껍니다. vertices -> uv -> normals -> triangles 순으로 만들어야합니다. 일단 빈 게임 오브젝트를 생성합니다. 그 후 스크립트 생성하고 매쉬를 생성할 게임 오브젝트를 동적할당해줍니다. GameObject go = new GameObject(); go.name = "Handmade GameObject"; go.tag = "Player"; MeshFilter mf = go.AddComponent(); Mesh mesh = new Mesh(); mesh.name = "HandmadeMesh"; 매쉬필터 컴포지션을 가져오고 매쉬를 동적할당합니다. 버텍스(vertices) 정점이라는 뜻으로 점을 찍습니다. 중심점..
Collider 충돌박스,히트박스 같은것 같다. Trigger는 한번 충돌판정 Collision는 여러번 충돌판정 Rigidbody 충돌판정을 처리해야하는 오브젝트는 Rigidbody가 있어야함 물리가 없으면 충돌판정 자체가 안되므로, 판정이 필요한 곳만 필요하다. private void OnCollisionEnter(Collision collision) //엑시트,스테이 //충돌판정을 처리해야하는 오브젝트는 Rigidbody가 있어야함 { if (collision.gameObject.CompareTag("Player")) //.tag == "Player" 같은거 { Debug.Log(collision.gameObject.name); } } 아이템을 뿌려줌 public class ItemManager :..
Prefabs - 복제하는 대신 메모리를 한 오브젝트의 메모리만 사용합니다. 수정 후 Overrides 할 경우 한번에 편집이 가능합니다. 프리팹을 열어서 편집 시 자동으로 저장됩니다. 기본 GameObject형이며 모든 오브젝트를 만들고 다 Prefabs화를 시켜주는게 좋습니다. Random.Range ( 범위 , 범위 ) - 랜덤 값을 구하는것이며 float 형과 int 형 사용 가능하며 int형은 최대값을 포함하지 않으며 float은 포함한다. 최소값은 다 포함합니다. 디폴트 매개변수 (Default Parameters) 앞에서부터는 못 넣습니다. 매개변수 = "기본값" 형식 예제) public void SpawnEnemy(Vector3 _pos, string _name = "Enemy") Inst..
Scene 이동 public class NextScene : MonoBehaviour { public string sceneName; // 씬 이름을 받을 String 칸 public void GotoScene() { SceneManager.LoadScene(sceneName); //이름을 받고 LoadScene을 한다. } } 오브젝트 삭제 public class ObjectVisible : MonoBehaviour { public void SetVisible(bool flg) { gameObject.SetActive(flg); } } X 버튼을 누를 시 창을 닫는 형식으로 되어있다. 팝업창에 사용 Unity 이미지를 불러오는 방법 이미지를 구하고 그 이미지를 Assets 파일 Textures 파일에 ..
유니티 화면 실행 화면 유니티 기본 설명 및 이동 코드 Materials를 만들때는 Mat를 앞에 붙여씀 player.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { [Range(0.0f, 100f)] // 스크롤 바 [SerializeField] // 프라이빗으로 지정하고 유니티에 띄울 수 있도록 해줌 private float speed = 0f; //접근 지정자를 생략 시 기본 private //유니티에선 변수를 퍼블릭으로 할 시 유니티 상에 수정 가능하게 표기됨 // 코드상에서 변수명을 바꿀 시 유니티에서 입력한 값이 초기화됨 // c..
main.cpp #include #include "CScreen.h" #include "CPoint.h" void Swap(int* const _lhs, int* const _rhs); void Swap(int& _lhs, int& _rhs); void Swap(float* const _lhsf, float* const _rhsf); // 디폴트 매개변수(Default Parameter, Default Argument) int Sum(int _lhs, int _rhs = 8) { //기본값을 줌 (인자를 안 줄 시 기본값 5를 입력 기본값은 오른쪽부터 //입력되어있어야 왼쪽도 입력 가능) //오른쪽에 넣어줘도 왼쪽값 입력안해도 기본값이 들어감 return _lhs + _rhs; } int Sum(int ..