using UnityEngine;
using System.Collections;

public class Road : MonoBehaviour {
 
 public float speed = 3.0f;    //public을 넣지 않으면 Inspector에서 수정불가능.
 public float x = 0;
 public float y = 0;
 
 // Use this for initialization
 void Start () {   // 시작하기 전에 세팅이나 초기화.
  
  
 
 }
 
 // Update is called once per frame
 void Update () { //게임이 종료될때 까지 계속해서 구동되는 부분
  
  y = y + Time.deltaTime * speed;
  renderer.material.mainTextureOffset = new Vector2(x,-y);  //위에서 밑으로 내려오는 건 음수 올라가는건 양수
  //x z ㅇ축은 안움직이기 때문에 Vector2로 기본값 설정
 }
}

'유니티3D > 예제' 카테고리의 다른 글

PlayerCrtl  (0) 2013.07.25
PlayerCtrl_소스  (0) 2013.07.24
자동차게임 전체 스크립트  (0) 2013.07.23
도로밖으로 차 못나가게 하기  (0) 2013.07.22
자동차 좌우 이동  (0) 2013.07.22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

유니티3D 스크립팅 개관

http://unity3d.com/support/documentation/ScriptReference/index.html

'유니티3D > 함수' 카테고리의 다른 글

UNITY3D 자주쓰는 스크립트_3  (0) 2013.09.29
UNITY3D 자주쓰는 스크립트_2  (0) 2013.09.27
UNITY3D 자주쓰는 스크립트_1  (0) 2013.09.27
Rigidbody.AddForce()  (0) 2013.08.07
C# 스크립트 심화_1  (0) 2013.07.21

Scripting Overview

이것은 유니티 안에서 스크립트가 어떻게 작동하는가에 대한 짧은 개관이다.

유니티 내부의 스크립팅은 동작들이라 불리는 스크립트 오브젝트들을 게임 오브젝트들에 접합 시킴으로써 이루어 진다. 스크립트 오브젝트들 내부의 서로 다른 함수들은 어떤 이벤트들 상에서 호출된다. 가장 많이 사용되는 것들은 다음과 같다.

 

 

Update함수:

이 함수는 하나의 프레임이 랜더링되기 전에 호출된다. 여기는 물리 코드를 제외한 대부분의 게임 동작 코드가 실행되는 곳이다.

 

 

FixedUpdate함수:

모든 물리 타입 스텝마다 한번씩 호출된다. 이곳은 물리 기반의 게임 동작들이 실행되는 곳이다.

 

 

함수 외부 코드(Code oputside any function)

오브젝트들이 로드될 때 함수 외부의 코드들이 실행된다. 이것은 스크립트의 상태를 초기화하는데 사용될 수 있다.

주의 : 이 문서의 섹션들은 당신이 Javascript를 사용한다고 가정한다. c#또는 Boo scripts 사용에 관한 것은 Writing scripts in C#을 참조하기 바란다.

당신은 또한 이벤트 핸들러들을 정의할 수 있다. 이 모든 것들은 On으로 시작되는 이름들을 가진다.

(즉 OnCollisionEnter처럼)

미리 정의된 모든 이벤트 리스트를 보려면, MonoBehavior를 위한 문서를 참조하기 바란다.

 

Overview: Common Operations

대부분의 게임 오브젝트에 대한 조작은 게임오브젝트의 Transform, 그리고 Rigidody를 통해서 이루어진다. 이것들은 Behaviour script들 안에서 멤버변수 transform과 rigidbody를 통해 각각 엑세스 될 수 있다.

 

 

그래서 만일 당신이 매 프레임 Y축으로 5도 만큼씩 회전시키길 원한다면 아래와 같이 코드를 작성할 수 있다.

 

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
              transform.Rotate(0,5,0);
 }
}

 

하나의 오브젝트를 앞으로 움직이고 싶다면 다음처럼 쓸 수 있다.

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
               transform.Translate(0,0,2);
 }
}

       

Overview: Keeping Track of Time

Time 클래스는 deltaTime이라 불리는 매우 중요한 클래스 변수를 갖는다. 이 변수는 Update 또는 FixedUpdate 함수가 마지막으로 호출된 이후 경과한 시간의 양을 저장한다. (Update함수 내부인지 FixedUpdate함수 내부인지에 따라 다르다.)

 그래서 앞의 예제를 frame rete에 종속되지 않고 일정한 속도로 회전하도록 만들기 위해 다음처럼 수정한다.

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
              transform.Rotate( 0, 5 * Time.deltaTime, 0); 

                      }    //end of Update()
}

 

오브젝트 이동

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
              transform.Translate(0, 0, 2 * Time.deltaTime); 

                      }    //end of Update()
}

 

만일 당신이 매 프레임마다 하나의 값에 더하거나 뺀다면 Time.deltaTime으로 곱해야 한다. 당신이 Time.deltaTime을 곱할 때 당신은 " 나는 매프레임 10미터를 움직이는 대신 매초 이 오브젝트를 10미터 움직이길 원한다."라고 표현하는 것이 된다. 이것은 당신의 게임이 Frame rate에 독립적으로 실행될 뿐 아니라 모션을 위해 사용되는 유닛들을 이해하기 쉽게 만들기 때문이다. (초당 10미터)

다른예로, 만일 당신이 시각에 따라 빛의 범위를 증가시키고 싶다면, 다음 구문은 초당 2유닛 만큼씩 반경을 변경시킬것이다.

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
             light.range += 2.0F * Time.deltaTime;

                      }    //end of Update()
}

 

Overview: Accessing Other Components

컴포넌트들은 게임오브젝트에 attach된다. 하나의 Renderer 컴포넌트를 게임오브젝트에 attach하는 것은 그것을 스크린 상에 랜더링 되도록 만뜨는 것이고, camara를 attach하는 것은 그것을 카메라 오브젝트 안으로 변환하는 것이다. 모든 스크립트들은 컴포넌트들이므로 그것들은 게임오브젝트들에 attach될 수 있다. 대부분의 일반 컴포넌트들은 간단한 멤버변수들로 엑세스 할 수 있다.

 

 

미리 정의된 변수들의 전체 리스트는 Component, Behavior, 그리고 MonoBehaviour 클래스에 대한 문서들을 참조하기 바란다. 만일 게임오브젝트가 당신의 fetch하고픈 타입의 컴포넌트를 가지고 있지 않다면, 위 변수들은 null로 셋팅될 것이다.

게임오브젝트에 attach된 어떤 컴포넌트나 스크립트는 GetComponent를 통해서 access될 수 있다.

 

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
  
 void Update () {
           OtherScript otherScript = GetComponent<OtherScript>();

           otherScript.DoSomething();

                      }    //end of Update()
}

 

 

 

 

 

 

'유니티3D > 함수' 카테고리의 다른 글

UNITY3D 자주쓰는 스크립트_3  (0) 2013.09.29
UNITY3D 자주쓰는 스크립트_2  (0) 2013.09.27
UNITY3D 자주쓰는 스크립트_1  (0) 2013.09.27
Rigidbody.AddForce()  (0) 2013.08.07
C# 스크립트 함수 _2  (0) 2013.07.21

+ Recent posts