검색결과 리스트
전체 글에 해당되는 글 15건
- 2015.05.22 유니티의 기본 스크립트
글
유니티의 기본 스크립트
Function
Awake, Start
Awake나 Start는 Update가 실행되기 전에 한번만 실행됩니다.
또한 Awake가 Start보다 먼저 실행됩니다.
리셋, 초기화가 필요할 경우 여기에 작성하시면 됩니다.
Update
매 프레임마다 실행됩니다.
FixedUpdate
물리기반(rigidbody, AddForce)를 사용할 때 사용합니다.
OnGUI
매 프레임마다실행됩니다.
UI(글자, 그림, 버튼)을 표시합니다.
스크립트로 GUI를 만들 수 있습니다.
GUI와 GUILayout이 있습니다.(GUILayout은 크기, 위치지정을 한 번만 하면 됨)
간단한 게임이면 GUILayout으로, 정확도가 필요하다면GUI로 만드시면 됩니다.
Label : 텍스트를 출력해줍니다.
Box : 기본 틀 안에 텍스트를 출력해줍니다.(라벨과 별차이는 없음)
Button : 버튼을 만들어 줍니다.(버튼을 텍스처로 교체 가능함)
Toggle : On/Off 토글을 만들어줍니다.(boolean)
Slider : 최대와 최소값 사이의 정해진 슬라이더 버튼을 만듭니다.
Group : GUI를 그룹으로 묶어 줍니다.( 내부 생성되는 GUI는 상대좌표 )
Group자체는 화면을 기준으로 하는 좌표지만
내부에 생성되는 GUI는 상대좌표로 바 뀌게 됩니다.
OnTriggerEnter
충돌을 감지하여 명령을 실행합니다.
오브젝트에는 rigidbody, IsTriigger가 있어야 합니다.
OnCollisionEnter
충돌을 감지하여 명령을 실행합니다.
OnTriiggerEnter와의 차이점은 오브젝트를 통과되느냐 안되느냐 입니다.
OnCollisionEnter를 사용하면 오브젝트가 통과 되지 않습니다.
OnMouse
자주 쓰게 될 것 중에 하나가 OnMouse가 될 것 입니다.
Enter : 마우스가 오브젝트 위에 올라 왔을 때 한 번 작동합니다.
Over : 오브젝트 위에 올라 왔을때 매 프레임마다 작동합니다.
Exit : 오브젝트 위에서 벗어 났을 때 한 번 작동합니다.
Down : 오브젝트 위에서 "눌렀을 떄" 작동합니다.
Up : 오브젝트 위에서 눌렀다가 임으의 위치에서 "땟을 때" 작동합니다.
UpAsButton : 오브젝트 위에서 눌렀다가 오브젝트 위에서 "땠을 때 " 작동합니다.
Drag : 오브젝트를 계속 누르고 있을 때 작동합니다.
Mathf
Sin, Cos, Tan, Asin, Acons, Atan, Atan2는 모두 삼각함수입니다.
Sqrt : 제곱근을 계산해줍니다.
Abs : 절대값으로 나타내 줍니다.
Min, Max : 최대값과 최소값을 선택해 줍니다.
Pow : 승을 나타 냅니다.(a^b)
Exp, Log : 자연로그와 일반로그, 상용로그값을 계산해 줍니다.
Ceil : 올림
Floor : 버림
Round : 반올림
Sign : -값이면 -1, +값이면 1로 표시함(0은 1로)
Clamp : 시작 값에서 시작하여 도착 값에 도착하면 정지됨
Lerp : 두 숫자를 더해 보정계수를 곱함(보정계수 0 ~ 1)
Repeat : 도착 값에 도착하면 처음부터 다시 시작함
PingPong : 시작 값과 도착 값 사이를 왕복하며 출력함
아무래도 그냥 계산용으로 사용 하시는 분은 없을 껍니다.
물체의 반복적인 움직임을 나타낼 때 사용하지 않을 까 합니다.
(아케이드 게임의 발판이나 불빛의 깜빡임, 스무스한 움직임 등..)
Mathf는 자체가 하나의 숫자로 결과값을 나타내기 때문에...
여러 개를 겹쳐서 사용하셔도 무방하며 그 자체로 변수가 됩니다.
Mathf.Sin(Mathf.Cos(Mathf.Tan) + 1) - 2 )
이런 식으로 사용 할수 있습니다.( 단 어떻게 될지 예측은 해야 겠죠)
많이 사용 하는 것만 추려서 설명하였습니다.(자세한 건 레퍼런스에)
대부분 Time.time을 사용하여 값을 얻게 될 겁니다.
Mathf.Sin(Time.time)
이런 식으로 사용 하면 Time.time 부분이 X의 값이 되어 싸인 곡선대로 출력
하게됩니다.(3.14초 주기로 반복적으로 값이 출력됨)
transform
transform.Translate
transform.Translate는 오브젝트를 이동 시키는 명령입니다.
transform.Translate(X, Y, Z); or transform.Translate(Vector3(X, Y, Z)); 로 표현합니다.
프레임이 기준이 되기 때문에 그냥 사용한다면 엄청난 속도로 이동하게 됩니다.
(초당 프레임이 100이면 100배의 속도로 이동하게 됩니다.)
속도를 리얼타임으로 제어하기 위해서 TIme.deltaTime을 사용해야 합니다.
(Time.deltaTime은 Awake나 Start에서는 사용할 수 없습니다.)
transform.Translate(X * Time.deltaTime, 0, 0);
transform.Translate(Vector3(X, 0, 0) * Time.deltaTime);
이제 속도를 조절 할 수 있게 되었습니다.
방향을 조절하려면 X, Y, Z를 변경하시면 됩니다.
transform.Translate(Vector3(X, Y, Z)); 를 이용하여 방향을 조절합니다.
(Vector3는 3차원 단위좌표로 생각하시면 됩니다.(기준이 되는 크기를 말함))
각 좌표 벡터를 합친 방향을 나타냅니다.
Vector3(1, 0, 0)의 경우 X방향을 뜻하며
Vector3(1, 1, 0)의 경우 X, Y의 중간방향을 뜻합니다.
Vector3(1, 0, 0)은 다른 명령으로 대신 사용 할 수 있습니다.
Vector3(1, 0, 0) = Vector3.right
Vector3(-1, 0, 0) = Vector3.left
Vector3(0, 1, 0) = Vector3.up
Vector3(0, -1, 0) = Vector3.down
Vector3(0, 0, 1) = Vector3.forward
Vector3(0, 0, -1) = Vector3.back
transform.Rotate
transform.Rotate는 오브젝트를 회전 시키는 명령입니다.
transform.Rotate(X, Y, Z); or transform.Rotate(Vector3(X, Y, Z));로 표현합니다.
여기서 좌표는 축의 기준이 됩니다.
만약 (1, 0, 0)으로 값을 주게 된다면 X축을 기준으로 회전하게 됩니다.
X의 값을 준다면 X방향으로 회전하는 것이 나이라 Z방향으로 히전하게 될 것입니다.
X의 값은 회전하는 속도를 나타냅니다.
속도는 '각' 속도입니다.(1을 주면 초당 1도씩 회전)
리얼타임으로 변경하려면 Time.deltaTime을 사용합니다.
transform.Rotate(X * Time.deltaTime, 0, 0);
transform.Rotate(Vector3(X, 0, 0) * Time.deltaTime);
transform.Position
transform.Position는 오브젝트의 위치를 부여하는 명령입니다.
transform.Position = Vector3(1, 0, 0); or transform.position.x = 0;로 표현합니다.
오브젝트의 위치 값을 얻고 싶다면..
print(transform.position);명령을 사용 하시면 됩니다.
(명령 자체에 위치 자표가 포함 되어 있습니다.)
특정 좌표만 고정 하고 싶다면 tranform.position.x = X;를 사용하시면 됩니다.
X좌표로는 이동이 불가능하게 됩니다.
또한 부여된 위치는 고정 불변은 아닙니다. Time.time을 사용하면
transform.Translate처럼 움직일 수 있습니다.
transform.position = Vector3(1, 0, 0) * Time.time;
transform.position.x = 1* Time.time;
RECENT COMMENT