본문 바로가기

분류 전체보기106

[Unity] Position ◾ 원래 Transform 찾으려면 GameObject > transfrom 찾았어야 했는데, 너무 많이 쓰다보니 transform 만 쳐도 나옴! ◾ 이동 구현하기 1. 가장 기본적인 방법 (월드 지표 기준이라 Rotation 을 틀었을 경우 따라가지 못함) [SerializeField] float _speed = 10.0f; if (Input.GetKey(KeyCode.W)) transform.position += new Vector3(0.0f, 0.0f, 1.0f) * Time.deltaTime * _speed; if (Input.GetKey(KeyCode.S)) transform.position += new Vector3(0.0f, 0.0f, -1.0f) * Time.deltaTime * _spe.. 2024. 3. 31.
[Unity] Managers 1. GameObject 로 Managers 찾아오기 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { void Start() { GameObject go = GameObject.Find("@Managers"); Managers mg = go.GetComponent(); } void Update() { } } → 게임 오브젝트를 이름으로 찾는거는 별로 좋지 않다. (부하가 굉장히 심함) 2. Managers 만들고 Player 연동하기 using System.Collections; using System.Collections.Generic; usi.. 2024. 3. 30.
[C#] 객체지향 직업선택 1. 파일 분리 , Player 작업 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _240330 { // 똑같이 열거형 enum PlayerType { None = 0, Warrial = 1, Archer = 2, Magition = 3, } internal class Player { protected PlayerType type; protected int hp = 0; protected int attack = 0; protected Player(PlayerType type) // 아무것도 인자가 없으면 사용 불가 { this.. 2024. 3. 30.
[C# 서버] 멀티쓰레드 쓰레드 하나 생성 (기본적으로 foregreound 쓰레드로 만들어짐) namespace ServerCore { internal class Program { // 무슨 일을 할지 static void MainThread() { while (true) { Console.WriteLine("Hell Thread!"); } } // 메인 static void Main(string[] args) { Thread t = new Thread(MainThread); // 직원 고용 t.Start(); // 무슨 일 할지 지정 Console.WriteLine("Hello, World!!!"); } } } 2024. 3. 27.
[C# 서버] 스크립트 생성 ◾ DummyClient → 유니티 연동을 하지 않았으므로 테스트용 , 클라이언트 역할을 대신 → 클라이언트를 500 ~ 1000 개 짜리를 사용하는 것처럼 패킷을 쏘는 역할 → 다용도로 테스팅 환경을 구축하기 위한 용도 ◾ Server → 실제로 나중에 올릴 서버 → 핵심적인 코어 부분들은 ServerCore 에서 만든 거를 가져다가 쓸 예정 ◾ ServerCore → 필요한 핵심 기능들을 넣어줄 예정 ◾ 옵션 → 나중에 여러 개를 동시에 실행할 예정 2024. 3. 27.
[C# 서버] 게임 서버의 종류 ◾ 서버 → 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램을 뜻한다. ◾ 서버는 Web Server 와 Game Server 로 나뉜다. ◾ Web Server (aka. HTTP Server) → 접속 후 끄면 응답이 끊긴다. → 질의/응답 형태 → 드물게 정보를 요청/갱신한다. → SNG 게임 : 게임이 진행된 다음에 그 결과물만으로 랭킹 시스템 구현 → ASP.NET (C#) , Spring (Java) 등등 웹 서비스에 많이 사용함 ◾ Game Server (aka. TCP Server, Binary Server, Stateful Server 등등) → 교류가 중요하게 작용함 → 요청/갱신 횟수가 많다. → 실시간 Interaction 이 필요하다. → 언제든지 클라이언트와.. 2024. 3. 27.
[유니티] 3. (Ray 시각화하기) 공부 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class Movement : MonoBehaviour { [SerializeField]Transform target; Ray lastRay; void Start() { } void Update() { if (Input.GetMouseButtonDown(0)) { lastRay = Camera.main.ScreenPointToRay(Input.mousePosition); } Debug.DrawRay(lastRay.origin, lastRay.direction * 100); GetComponent().destinat.. 2024. 3. 27.
[1] Navigation(Nav Meth) - 고급 버전 ✳ Navigation(Nav Meth) : 내비 매쉬 ◾ Nav Mesh Agent → 이 컴퍼넌트가 있는 오브젝트만 길찾기 알고리즘을 사용할 수 있음 → Angular Speed : 높을수록 전환이 빨라짐 ◾ C# Mover using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class Mover : MonoBehaviour { [SerializeField] NavMeshAgent agent; private void Awake() { agent= GetComponent(); } void Update() { if (Input.GetMouseButtonDown(0).. 2024. 3. 27.
[유니티] 2. (Nav Mesh, static, Advanced) 공부 ✳ Nav Mesh 조정 ◾ Navigation (Obsolete) ◾ Nav Mesh Obstacle (내브메시 장애물) ◾ Min Region Area (최소 지역) → 연결되지 않은 작은 내비메시 영역을 제거할 수 있습니다. 표면 영역이 특정 값보다 작은 내비메시 영역은 제거됩니다. ◾ NavMeshModifier (내브메시 장애물) ◾ Static (공전) → On / Off → 끄면 관통하게된다. ◾ Advanced(고급) > Voxel(부피 ,픽셀)Size → 크기를 조절할 수 있다. , 하지만 잘 수정하지 않는다 → Agent Radius 를 조절해서 많이 수정한다. (Manual Voxel Size 를 체크하면 Voxel Size 이 바뀌지 않는다.) 2024. 3. 26.