728x90
728x90
유니티에서 기울어진 바닥에 공을 떨어트렸을 때, 매 프레임마다 공이 이동한 거리를 구하는 스크립트를 작성해보았다. float 형식으로 최초 시작지점인 startingPoint를 선언해주었고, Vector3 값 중 Z값의 변화를 측정하기 위해 처음 한 번 실행되는 Start()메서드에 startingPoint = transform.position.z로 시작지점의 Z값을 찍어주었다. 그리고 Update()메서드 내 지역변수로 float형식의 distatnce를 선언해 주었고, distance는 매 프레임마다 이동하는 tranform.position.z 값에서 startingPoint를 빼주어 계산하도록 하였다. Debug.Log(distance)를 선언해주면 완성! startPoint의 z값이 0으로 찍히고..
Switch 문은 if 문과 같이 조건 제어문에 속한다. 하지만 if문과 달리 (이상,이하,초과,미만)과 같은 부등식이 사용될 수 없는 특징을 가지고 있다. 즉, switch 문에서는 비교할 변수가 어떤 값을 가지냐(==)에 따라 실행문을 선택할 수 있는 것이다. (모든 switch 문은 if문으로 바꿀 수 있지만, 모든 if문을 switch문으로 치환할 수는 없음) Switch문은 if 조건문보다 가독성이 좋고, 다수의 변수값을 비교할 때 용이하다는 장점을 가지고 있다. 위의 스크립트를 보면 switch문은 보통 case와 함께 사용되며 switch(intelligence)와 case 1, case 2 실행문을 비교하여 적합하면 print()를 호출하게 된다. 원하는 case 문을 찾을 때 까지 계속 ..
Enumerations는 열거형이란 뜻으로 줄여서 enum이라고 쓴다. enum()함수는 인자들에 암시적(implicit)으로 integer 정수값을 부여하는 형변환 함수인데 최적화 역할을 수행한다. enum Direction {North, East, South, West}은 Direction 방향을 정하는 동서남북 인수들을 가진 배열인데 default로 North는 0, East는 1, South는 2, West는 3의 값을 배정받는다. 만약 enum Direction {North = 1, East, South, West} 이라면, North부터 1, East = 2, South = 3, West = 4의 값을 가진다고 보면 된다. (각각 인자에 원하는 정수값을 배정해줄 수 있다.)
Invoke()함수는 시간 딜레이를 주고 함수를 실행시키는 함수이다. 위 스크립트르 보면 SpawnObject() 메소드를 실행하면 target이라는 GameObject가 생성되는데 해당 함수가 실행되기 전 Start() 메소드내 Invoke()가 먼저 실행되게 된다. Invoke()는 호출string(이름)과 몇 초 후 실행될 것인가 하는 Time Delay라는 2가지 매개변수를 가진다. 즉, 스크립트가 실행되면 2초 후 SpawnObject 메소드가 호출되게 된다. InvokeRepeating() 함수는 Invoke()를 반복해주는 함수이다. InvokeRepeating()은 ("메서드 이름", 시간 딜레이, 반복 시간 단위)라는 3가지 인수를 가지고 있다. 위의 스크립트를 보면, SpawnObjec..
Instantiate()는 유니티 내 게임오브젝트의 Clone(복제물)들을 생성하는 함수이다. 보통은 Prefab을 복제하는데 자주 사용되는데, Prefab은 프로젝트 진행 과정에서 만든 Asset이라고 보면 된다. 위 스크립트에서 "Fire1"은 마우스 좌클릭을 의미한다.(프로젝트 세팅 - Input Manager 참고) 즉, 플레이 모드에서 마우스 좌클릭을 해줄 때 마다 rocketPrefab이 생성되는 것이다. 하지만 플레이모드에서 보면 생성된 프리팹들이 rigidbody 중력값을 받아 생성되자 마자 떨어지게 된다. (하늘 방향으로 쏠 경우) 이런 경우, as Rigidbody를 추가하여 rigidbody 컴포넌트에 AddForce()함수를 적용하면 원하는 방향(하늘을 향해)으로 프리팹이 발사된 후..
유니티에는 크게 2가지 Data Type이 있는데 Value Type과 Reference Type으로 나뉜다. Value는 특정 값을 가지는 반면, Reference는 Value값이 저장된 메모리의 주소를 가진 형태이다. 이 두 가지 타입의 차이는 데이터를 copy할 때 나타나는데, Value타입은 변수를 복사한 후 복사본을 사용해도 원본 변수에 아무 영향을 미치지 못하지만, Reference타입은 복사 시 메모리 주소 전체를 가지여고 때문에 데이터 수정 시 원본에까지 영향을 미친다. Value Type의 경우, pos는 Vector3 데이터 타입이기 때문에 trasform.position 변수에 아무런 영향을 주지 못하고, 결과적으로 transform에도 변화가 없다. 스크립트를 적용 후 유니티에서 플..