본문 바로가기

게임개발/유니티 엔진20

몬스터 반경 내의 플레이어 감지 사전 지식1. 벡터의 크기 구하는 방법 직선상에 빈틈이 없도록 실수 집합으로 모든 수를 표시한 것을 수직선이라고 한다.0을 기준으로 음수와 양수라는 두 개의 체계가 서로 대칭되어 있고, 원점에서부터 크기와 방향을 가진 화살표로 표현할 수 있다.수가 지니는 방향은 부호로 나타내며 크기는 원점으로부터의 거리를 의미한다.ex) "-.. 2024. 4. 3.
GameObject.AddComponent("스크립트") start 메서드 실행 문제점 해당 게임 오브젝트에 C# 스크립트를 컴포넌트로 추가했다 하더라도 "Start()" 즉시 실행되지 않는다. 1. gameObejct.AddComponent("C#스크립트"); 해당 스크립트의 인스턴스를 생성하고 게임오브젝트에 연결하는 작업만을 수행한다. Awake()는 해당 스크립트의 인스턴스가 만들어진 후에 로드 되는데 .AddComponent 처리시 인스턴스가 생성되므로 해당 스크립트의 Awake() 실행 2. AddComponent 작업이 끝나면 해당 스크립트가 인스턴스화 되서 힙 메모리에 생성됨 3. 모든 스크립트의 인스턴스화가 완료된 후, 다음 프레임에 Start() 메서드를 호출 이때는 모든 스크립트의 Awake() 메서드가 호출된 상태임 Start() 메서드의 실행은 유니티의 내부적인 프로세.. 2024. 3. 26.
Game Object 파괴시 null 처리 MonsterController는 player 인스턴스의 주소를 들고 있는데 그 인스턴스를 파괴했을 때, CameraController는 매 프레임마다 heap에 있는 player 인스턴스를 접근해서 사용중인데 갑자기 그 인스턴스가 메모리에서 날아가버리면 null을 접근하고 있으므로 런타임 에러가 발생한다. GameObject player; // player 변수는 x001 주소를 가리키고 있음 transform.position = player.transform.position + delta; // player.transform.position -> x001 주소에 아무것도 없음 heap 객체에 있는 인스턴스가 메모리에서 해제됬다고 해서 그 인스턴스를 가리키고 있는 참조값은 변하지 않는다. 그런데 왜? .. 2024. 3. 15.
네비게이션 시스템 네비게이션 시스템이란? 해당 오브젝트를 지정해서 그 오브젝트가 이동가능한 곳과 이동하지 못하는 곳을 이해할 수 능력을 부여한다. 여러가지 네비게이션 컴포넌트가 있는데, 해당 오브젝트에 네비메시 에이전트라는 컴포넌트를 추가하면 다른 오브젝트와 충돌을 피하는 능력을 부여해준다. 사용방법 해당 위치를 마우스로 클릭했을 때, "Wall" Layer가 붙어있는 오브젝트라면 이동을 한다. void OnMouseClicked(Defines.MouseEvent evt) { if (playerState == PlayerStateEnum.Die) return; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(Camera.main.tran.. 2024. 3. 10.