'유니티/스크립트'에 해당되는 글 123건

  1. 2014.01.27 유니티 특정 시간마다 호출되는 함수 만들기.
  2. 2014.01.27 유니티 RayCast 관련 - 마우스 클릭으로 판별 - 4.3 2D 용 전환
  3. 2014.01.27 유니티 싱글톤 패턴 만들기
  4. 2014.01.27 Inspector에서 드래그로 변수 값 조정 하는 방법
  5. 2014.01.27 [초보]유니티로 가위바위보 게임 만들기 - 4.3 2D 사용
  6. 2014.01.26 유니티 관련 컴포넌트 추가 방법
  7. 2014.01.26 유니티 스크립트 코드로 컴포넌트 삭제하기
  8. 2014.01.26 Unity3D 스프라이트 렌더러 색 변경
  9. 2014.01.26 Unity2D 스프라이트 렌더러 동적할당
  10. 2014.01.26 유니티 코루틴 관련 함수(대화 관련)

유니티 특정 시간마다 호출되는 함수 만들기.

|

특정 시간마다 호출되는 함수를 만들고 싶을수 있습니다.







유니티 내에 존재하는 함수도 있음

아래 함수는 특정시간 후 함수 호출 (반복호출시 끝에 Invoke("MoveMoles", 2.0f)) 를 넣어주면 계속해서 반복호출이 되겠죠?


아래처럼 코루틴을 사용하는 방법이 제일 일반 적인 방법이 아닐까 싶습니다.

아래코드는 CountTime이 무한 반복 됩니다.



Trackback 0 And Comment 0

유니티 RayCast 관련 - 마우스 클릭으로 판별 - 4.3 2D 용 전환

|


Unity 3D의 레이케스트를 사용해서 물체를 판별하는 방법(당연히 물체에 콜라이더 컴포넌트 적용 되야 됨)



  1.             RaycastHit hit = new RaycastHit();
  2.  
  3.        
  4.  
  5.             if (Physics.Raycast(ray.origin,ray.direction, out hit)) {
  6.                 hit.transform.gameObject.SendMessage("HandleInput");
  7.             }
  8. }


Unity 2D의 레이케스트를 사용해서 물체를 판별하는 방법(당연히 물체에 2D 콜라이더 컴포넌트 적용 되야 됨)


  1. {
  2.     RaycastHit2D hit = Physics2D.GetRayIntersection(ray,Mathf.Infinity);
  3.            
  4.     if(hit.collider != null && hit.collider.transform == thisTransform)
  5.         {
  6.                // raycast hit this gameobject
  7.          }
  8. }


아래 방법도 동일함


  1.  
  2. if(collider2D.OverLapPoint(mousePosition))
  3. {
  4. //do great stuff
  5. }
  6.  
  7.  
  8. }


Trackback 0 And Comment 0

유니티 싱글톤 패턴 만들기

|

유니티에서는 보통 매니저 클래스라고 게임 전체를 관리하는 클래스를 만듭니다.

게임 개발중 변수나 함수등 전역적으로 관리할수있게 매니저 클래스를 싱글톤 패턴으로 만드는 경우가 많습니다.

아래 코드입니다.





Trackback 0 And Comment 0

Inspector에서 드래그로 변수 값 조정 하는 방법

|



변수위에 [Range(0,2)] 를 붙여주면 화면과 같이 드래그로 값을 조정 할 수 있다.

물론 Range안에 값은 원하는 값으로 조정 가능하다. 디버그할때 편할듯?

Trackback 0 And Comment 0

[초보]유니티로 가위바위보 게임 만들기 - 4.3 2D 사용

|

가위바위보

가위 바위 보(문화어: 가위주먹)는 여러 사람이 기본적으로 ‘가위, 바위, 보’를 외치며 동시에 각기 특정한 손 모양을 내어 상성 관계에 따라 승부를 결정짓는 게임이다. 가위는 바위에게 지며, 바위는 보에게 지고, 보는 가위에게 진다. 가위는 바위를 자를 수 없으며, 보(보자기)는 바위를 쌀 수 있고, 가위는 보를 자를 수 있다는 설명이 널리 퍼져 있다.

둘이서 할 때에는 가장 기본적인 형태로 한다. 둘이 같은 손 모양을 내면 비기는 것으로 한다. 여러 명이서 할 때에는 모두 같은 모양을 내거나, 세 가지 손 모양이 동시에 나오면 비긴다. 순서를 정할 때에는 먼저 지는 사람이 낮은 순위를, 먼저 이기는 사람이 높은 순위를 차지한다.

다른 종목의 놀이를 할 때, 어느 쪽이 먼저 시작할지를 정하는 데 동전 던지기나 가위 바위 보가 쓰이기도 한다.Rock paper scissors ko.jpg



이미지



플로우





프로젝트 생성


1. 프로젝트 이름 RPCGame

2. setup defaults for 2D 프로젝트 생성





폴더 생성

1. Resources

2. Scene

3. Scripts



이미지 추가


GameObject -> Create Empty( Ctrl+Shift+N) 후 스프라이트 렌더러 컴포넌트 추가

이름 Player 로 변경




player 인스펙터 변경

player 복사 후 Com 오브젝트 생성





빈 게임오브젝트 생성 이름 CsGameManger로 변경

스크립트 생성 -> CsGameManager

스크립트 할당


CsGameManager 추가


버튼 출력 모습


GUI 버튼 클릭시 콘솔 창에 해당 내용 출력이 됨.

유니티 GUI 버튼은 클릭시 true 을 반환함.


CsGameManager 에 Player 및 com 할당 및

버튼클릭시 스프라이트 이미지 변경하기





버튼 클릭시 이미지 변경




Resources 폴더안에 파일이 있어야됨.


컴퓨터 스크립트 추가

컴퓨터 에니메이션 발생


컴퓨터는 계속해서 가위, 바위, 보 스프라이트가 번갈아가면서 보여야됨

버튼 클릭시 랜덤으로 가위, 바위, 보 이미지 중 하나를 출력해야됨


Com->animation 








버튼 클릭시 판별하기

2초동안 플레이어 버튼 







rpcGame.unitypackage



Trackback 0 And Comment 0

유니티 관련 컴포넌트 추가 방법

|
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour {
    public SphereCollider sc;
    void Example() {
        gameObject.AddComponent("FoobarScript");
        sc = gameObject.AddComponent("SphereCollider") as SphereCollider;
    }
}


Trackback 0 And Comment 0

유니티 스크립트 코드로 컴포넌트 삭제하기

|


리지드 바디 컴포넌트 삭제 하는 방법


Rigidbody2D tmp = GetComponent<Rigidbody2D>();

Destroy(tmp);


모든 컴포넌트는 이런식으로 삭제가 가능하다.


Trackback 0 And Comment 0

Unity3D 스프라이트 렌더러 색 변경

|

private SpriteRenderer renderer;


renderer  = mole.GetComponent<SpriteRenderer> ();

renderer.color = new Color(0f, 0f, 0f, 1f); // Set to opaque black

Trackback 0 And Comment 0

Unity2D 스프라이트 렌더러 동적할당

|

Resource에서 Sprite 로딩.

SpriteRenderer spr = GetComponent<SpriteRenderer>();
spr.sprite = Resources.Load<Sprite>("path/name");


Trackback 0 And Comment 0

유니티 코루틴 관련 함수(대화 관련)

|
출처 : http://www.unitystudy.net/bbs/board.php?bo_table=writings&wr_id=43


코루틴용 데이터

엔진이 수행하는 기능

yield return null

다음 프레임까지 대기

yield return new WaitForSeconds(float)

지정된 초 만큼 대기

yield return new WaitForFixedUpdate()

다음 물리 프레임까지 대기

yield return new WaitForEndOfFrame()

모든 렌더링작업이 끝날 때까지 대기

yield return StartCoRoutine(string)

다른 코루틴이 끝날 때까지 대기

yield return new WWW(string)

웹 통신 작업이 끝날 때까지 대기

yield return new AsyncOperation

비동기 작업이 끝날 때까지 대기 ( 씬로딩 )



순차적 수행 가능







public class DialogExample : MonoBehaviour {

   

    bool showDialog = false;

    string answer = "";

   

    IEnumerator Start()

    {

        yield return StartCoroutine("ShowDialog"); //다른 코루틴이 끝날 때까지 대기

        yield return StartCoroutine(answer);

    }

   //answer 에 값이 들어가기 전까지는 코루틴이 끝나지 않음

    IEnumerator ShowDialog()

    {

        showDialog = true;

        do

        {

            yield return null;

        } while(answer == "");

       

        showDialog = false;

    }

   

    IEnumerator ActionA()

    {

        Debug.Log ("Action A");

        yield return new WaitForSeconds(1f);

    }

 

    IEnumerator ActionB()

    {

        Debug.Log ("Action B");

        yield return new WaitForSeconds(2f);

    }

   

    void OnGUI()

    {

        if(showDialog)

        {

            if(GUI.Button(new Rect(10f, 10f, 100f, 20f), "A"))

            {

                answer = "ActionA";  

            } else if(GUI.Button(new Rect(10f, 50f, 100f, 20f), "B")) {

                answer = "ActionB";

            }

        }

    }

   

}




Trackback 0 And Comment 0
prev | 1 | ··· | 8 | 9 | 10 | 11 | 12 | 13 | next