[Unity 3D] Physics.OverlapSphere (주변 콜라이더 추출하기) Physics.OverlapSphere - 중점과 반지름으로 가상의 원을 만들어 추출하려는 반경 이내에 들어와 있는 콜라이더들을 반환하는 함수 함수의 반환 값은 Collider 컴포넌트의 배열로 넘어옵니다. 또한 OverlapSphere 함수는 특정 레이어만 검출할 수도 있어요. 예제 위 예제는 주변 동료 몬스터가 공격당했을 때 같이 공격 태세로 전환하기 위한 코드입니다. 특정 레이어만 검출할 수 있도록 "ENEMY" 레이어를 추가했으며, 레이어는 비트 연산 표기법을 사용해서 10번째 레이어를 의미하는 1 2019.11.02 [Unity 3D] Vector3.Distance (가장 가까운 오브젝트 찾기) Vector3.Distance(Vector3 a, Vector3 b) - a와 b 사이에 거리를 측정해 반환하는 함수 거리를 구하는 방법들 Distance 의외에도 거리를 재는 다른 방법들이 있다. Vector3.Distance 와 magnitude는 정확한 거리 계산을 하고, sqrMagnitude는 단순히 두 오브젝트 간의 거리를 비교할 때 사용한다. sqrMagnitude는 루트 계산을 하지 않기 때문에 Distance와 magnitude 보다 속도가 훨씬 빠르다. 루트 계산을 하지않고 벡터 연산만 한 후 그 벡터의 제곱근의 값만을 반환하기 때문이다. 예제 아래 예제는 Sphere를 기준으로 Sphere와 제일 가까운 큐브를 찾는것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1.. 2019.05.16 [소프트웨어공학] 폭포수 모델(waterfall model) 폭포수 모델(waterfall model) 소프트웨어 프로세스 중 하나로 개발의 흐름 단계가 마치 폭포수처럼 흐른다 하여 폭포수 모델이라고 하며, 선형 순차 모델 또는 고전적 소프트웨어 생명주기라고도 한다. 폭포수 모델의 특징 수행되는 활동들이 서로 겹치지 않음 단계들이 병행 수행되거나 거슬러 올라가지 않음 매 단계에서 끝날 때마다 결과를 확인 후 다음 단계로 가야 함 수정을 위한 재작업을 위해 앞 단계의 피드백 필요 폭포수 모델은 다음과 같은 단계를 가진다. 타당성 조사 요구분석 설계 개발 통합과 시스템 테스트 이행과 유지보수 타당성 조사 먼저 첫 번째 단계에서는 개발할 소프트웨어 시스템의 세부 사항을 확인하는 것이다. 이것을 확정 지어야 다음 설계 단계로 넘어갈 수 있다. 즉, 소프트웨어 개발 시나리.. 2020.04.07 [Unity 3D] Time.deltaTime 과 Update Time.deltaTime - 이전 프레임에서 현재 프레임까지 걸린 시간 Update() Time.deltaTime에 대해서 자세히 설명하기 전에 먼저 Update문을 설명하자면 Update()는 유니티에서 가장 빈번히 사용되는 함수이며, 스크립트가 활성화돼 있을 때 매 프레임마다 함수로써 물리 효과가 적용되지 않은 오브젝트의 움직임이나 단순한 타이머, 키 입력 등등 모니터링 기능이 필요할 때 유용하다. 하지만 Update 가 모든 컴포넌트에 매 프레임마다 불려지는 것이 보장되지는 않는다. 프레임은 소중하다 - 매 초마다 많은 횟수의 프레임이 반복된다. 그러지 못하면 게임이 버벅 거리거나 오류가 생긴 것처럼 보일 수 있다. 매 프레임마다 씬 안에 모든 활성화된 MonoBehaviour 컴포넌트에 Upda.. 2019.05.12 [Unity 3D] 유니티 빌드 에러(Your project path contains non-ASCII characters) 유니티 빌드를 하다 보니 빌드 실패 에러가 떴다. 에러의 내용을 보아하니 [Your project path contains non-ASCII characters...] 프로젝트의 경로가 아스키코드가 아닌 문자를 포함하고 있다고 한다. 그래서 경로를 확인한 결과 내 이름(한글)으로 되어있었다. 해결 : 프로젝트 경로를 영문으로 바꾼다. 2019.08.07 [C#] 생성자와 종료자 생성자 - 생성자는 클래스와 이름이 같고, 반환 형식이 없다. 생성자의 임무는 해당 형식(클래스)의 객체를 생성하는 것뿐이기 때문이다. 클래스를 선언할 때 명시적으로 생성자를 구현하지 않아도 컴파일러에서 생성자를 만들어준다. 생성자를 구현해야 할 때는 객체의 필드를 원하는 값으로 초기화하고 싶을 때이다. 또한 오버 로딩 가능. 종료자 - 종료자는 생성자와는 달리 매개변수도 없고, 한정자도 사용하지 않는다. 또한 오버 로딩도 불가능하며 직접 호출할 수도 없다. CLR의 가비지 컬렉터가 객체가 소멸되는 시점을 판단해서 종료자를 호출한다. 생성자 예제 ※ 컴파일러가 기본 생성자를 제공하지 않는 경우 - 생성자를 하나라도 직접 정의한다면 컴파일러는 매개 변수 없는 기본 생성자를 제공하지 않는다! 직접 생성자를 .. 2019.05.18 [소프트웨어공학] 소프트웨어 프로세스 개요 프로세스(process) 프로세스는 간단히 말해서 '일의 과정이나 공정'이다. 하지만 소프트웨어 프로세스는 소프트웨어 시스템을 개발하거나 유지보수의 목적으로 수행되는 활동들의 절차를 의미한다. 소프트웨어 프로세스의 목적 소프트웨어 공학에서 프로젝트를 수행할 때 프로세스의 존재가 왜 필요한지 생각해보자면 생산성 향상과 공통의 개발 문화와 공통의 기술을 제공하기 때문이다. 또한 조직 구성원들 간의 활발한 의사소통은 높은 추적성을 뒷받침해준다. 전체 프로세스를 이해하는데 도움을 줌 시스템 개발 진행과정 추적 자원 사용에 대한 사전 계획 가능 구조화된 방법을 개발에 적용 이전에 얻은 노하우를 통한 시행착오 감소 빠른 적응 소프트웨어 프로세스 활동 섬머 빌(Sommerville) 1. 소프트웨어 명세: 소프트웨어.. 2020.04.05 [벡터] 벡터의 연산 위 그림에 보이는 a 벡터와 b 벡터가 있다. 각각 a 벡터는 , b 벡터는 의 성분을 가지고 있으며, 두 벡터 모두 2차원 벡터임을 알 수 있다. 그래서 본능적으로 자리끼리 더할 수 있다는 것 또한 알 수 있다. 두 벡터를 더한 값은 가 나오며, 2차원 벡터이다. 빼기도 마찬가지이다. 이것을 시각화시켜본다면 위 그림과 같이 표현될 수 있겠다. 또한 여기서 중요한 것은 크기(벡터의 길이)와 방향이다. 또한 벡터의 장점은 '옮길 수 있다'라는 것인데 길이와 방향만 같다면 어느 곳에 벡터를 나타내도 다 똑같은 벡터이다. 그렇다면 벡터를 옮길 수 있다는 것과 벡터의 연산을 통해 구해진 새로운 벡터와 무슨 연관이 있는 것일까? 벡터는 옮길 수 있다고 하였다. b벡터를 옮겨 a벡터의 머리에 b벡터의 꼬리를 연결 .. 2019.12.19 [Unity3D] 유니티 player settings 오류 유니티 업데이트를 하고 player settings을 설정하려고 들어가면 이러한 오류가 쏟아졌네요. GUI 관련으로 계속 오류 찾다가 원인을 도통 찾지 못하였어요. 새로운 프로젝트를 만들어도 이러하였기 때문에.. 결국 빌드를 시도해 보았는데.. 결국 안드로이드 SDK 문제였습니다. 재설치 하니 오류 해결..! 2019.09.18 [C#] 정적 필드와 메소드 static - 사전적으로 '정적'이라는 뜻을 갖고 있다. 움직이지 않는다는 뜻이며, C#에서 static은 메서드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자이다. static 속성, 필드 정적(static) 속성 및 필드는 [클래스명. 필드명]과 같이 사용한다. Non static 필드들은 클래스 인스턴스를 생성할 때마다 메모리에 매번 새로 생성하게 되는 반면, static 필드는 프로그램 실행 후 해당 클래스가 처음으로 사용될 때 한번 초기화되어(프로그램 종료 시 해제) 계속 동일한 메모리를 사용하게 된다. 그렇다면 정적 필드를 만들어서 얻게 되는 이득은 무엇일까? static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않는다. 프로그램 전체에 걸쳐 공유.. 2019.05.18 more