[유니티 3D] 오브젝트 이동 및 회전하기 (월드좌표와 상대좌표)

2013. 9. 5. 18:33

 [유니티 3D] 오브젝트 이동 및 회전하기 (월드좌표와 상대좌표)

 

 유니티에서 기본적이지만 유용하게 사용되는 오브젝트 이동 과 회전에 대해서 알아보겠습니다. 

이동에는 월드좌표와 상대좌표로 크게 두가지 방식으로 구분됩니다.

 

1. 오브젝트 이동

  1) transform.position = (vector)  : 월드 좌표계에서의 위치값

     ex) transform.position = new Vector3(1, 1, 1); 을 하게 되면 오브젝트는 1, 1, 1에 위치합니다.

     매 프레임마다 돌려도 위치는 항상 1, 1, 1 에 위치하게 됩니다.


  2) transform.translate((vector)) : 상대좌표로서 현재의 위치에서 파라미터 값 만큼 이동하게 됩니다.

     ex) transform.translate(new Vector3(1, 1, 1)); 을 하게 되면 현재 오브젝트가 1, 1, 1에 있을 때,

       2, 2, 에 위치하게 됩니다.

     매 프레임마다 적용하면 프레임마다 1, 1, 1씩 이동하게 됩니다.

 

 

2. 오브젝트 회전

  1) transform.rotation  : 월드 좌표

     ex) transform.rotation = Quaternion.Euler(50.0f, 0, 0);


  2) transform.Rotate : 상대좌표

    ex) transform.Rotate(0, 1, 0);


알 수 없는 사용자 개발 이야기

[유니티 3D] GUI Skin 을 이용하여 버튼 만드는 방법

2013. 9. 4. 18:00

[유니티 3D] GUI Skin 을 이용하여 버튼 만드는 방법


 

GUI Skin 을 이용하여 버튼을 손쉽게 만들수 있다.

project 창에서 마우스 우클릭 -> Creat > GUI Skin 클릭하여 생성

버튼 하나에 GUI Skin 이 하나씩 매칭된다.

그리고 버튼을 클릭했을 때 버튼 이미지 변환도 가능하고, 그 외에 버튼에 대한 많은 기능들이 있다.


<사용 방법>

public GUISKin mySkin1;
public GUISKin mySkin2;

생성된 변수와 project 창에 이미 만들어진 GUI SKin을 연결.

void OnGUI
{
    GUI.skin = mySkin1;
    if(GUI.Button(new Rect(10,100,50,50), "title1") == true)
    {

// do something....

    }
 
   GUI.skim = mySkin2;
   if(GUI.Button(new Rect(10,200,50,50), "title2") == true)
   {

// do something....  

   }
 
}

 

 

알 수 없는 사용자 개발 이야기

[유니티 3D] 유니티 옵티마이징(최적화) 기법 소개

2013. 9. 2. 17:51

 

[유니티 3D] 유니티 옵티마이징(최적화) 기법 소개

 


많은 개발자들이 고민하고, 힘들어하는 부분이 되겠습니다.


유니티에서 몇가지 최적화 기법들을 알려드리겠습니다.



1. 로우 폴리곤(최대한 폴리곤 수를 줄이도록 노력하자.)


2. 드로우 콜 줄인다 (아틀라스 맵을 이용하여 머터리얼 수를 줄인다.)


3. static model 은 mesh combine 을 사용한다


4. Alpha Shader 를 최소화 한다


5. skybox 사용을 피한다


6. sound 파일 사용 주의 : 압축음원(백그라운드), 비압축음원(반복적인 사운드)


7. 텍스쳐 사이즈 최적화 : pot 사이즈


8. update 함수내에 소스를 최적화


9. 적당한 코루틴 사용 (사용하기 편리한 기능이지만, 너무 많아지면 프로그램이 무거워진다.)


10. plane 메쉬 사용하지 않는다.


11. Real Time Light 사용 자제한다.


12. Static Batch 옵션 사용 (고정된 물체는 공유)


13. Dynamic Batch 옵션 사용 - 버텍스가 900 이하인 경우


14. Lightmap Texture 용량 줄이자


15. Collider 는 Sphere, Box, Capsule 정도만 사용하며 Mesh colliider 는 피한다.


16. Rigidbody 를 동적으로 생성할 수 있으면 적극 사용한다.


17. Profiler 를 사용하여 부하가 걸리는 부분을 해결한다.

알 수 없는 사용자 개발 이야기

[유니티 3D] 씬 넘어갈 때 데이터 전송하는 방법

2013. 8. 22. 17:33

[유니티 3D]  씬 넘어갈 때 데이터 전송하는 방법


 

<Global Class에 static 옵션을 이용한다.>

1. 정적 클래스 생성한다. - 정적 클래스 만들때, 클래스명 뒤에 자동으로 붙여지는 "MonoBehaviour" 은 지우고, start(), update() 도 지운다.

 

2. 다음과 같이 static 변수를 선언한다.

public static class Variables
{
 public static int num;
 public static string name = "";

}

 

3. 이 변수를 사용하고 싶을때는 아래와 같이 사용하면 된다.

Variables.num = 10;
Variables.name = "Kim";

 

* 이 방법은 인스펙터(Inspector)에서 값을 조절할 수 없다는 단점이 있습니다.

 

알 수 없는 사용자 개발 이야기

판타지 디펜더스 2 < 스테이지 12 _2 >

2013. 8. 21. 16:38

판타지 디펜더스 2 < 스테이지 12 _2 >



스테이지 12탄의 두번째 리뷰로 돌아왔어요~~


요장면에서의 포인트는 저 멀리 있는 샤프슈터의 화살이 지금 빛이 번쩍하는 몬스터의 지점까지 날라가

는 것이었어요ㅎㅎ 샤프슈터~ 너와 함께라면 어디든 좋아^^ 이젠 집중적으로 레벨 업에 매진하는 것이 

별을 보시면 보이시죠? 더더더 강해질테야!ㅎ 



저의 디펜더는 어느 새 무적이 되었답니다!! 무려 별다섯을 달았네요ㅎ

더 이상 올라갈 레벨이 없군요~후훗! 그래도 방심하면 안되겠죠?  제가 뼈아픈 경험을 해봤잖아요ㅠㅠ! 

디펜더의 브레이브 시전~ㅎ



샤프슈터 둘도 어느 새 별세개씩! ㅎㅎ 일반 유닛같은 경우는 별3개 까지가 아직은 레벨 업 최대예요ㅠ

넘치는 마나로 인해 디펜더의 화려한 필살기~ 이럽션 작렬!! 



밑에 있던 메이지와 워리어는 과감히 소환 해제 시켰어요 ~ 그리고는 중심부의 유닛들의 집중도를 더욱 

높였답니다! 몬스터들아~ 당황하셨어요?ㅎㅎ 아주 그냥 정신을 못차리게 해 주겠다~!! 

그리고는 또 한 번 브레이브 시전을 하였네요~ (요번껀 은근 과시용;)



오른쪽 위편에 몬스터 특성이 떴네요~

유닛의 3열 중 맨 밑의 워리어 옆에 메이지를 새로 배치하였어요~ ㅎㅎ 그야말로 별들의 향연이네요~

딱 보기에도 강해 보이시죠? 이제 막바지에 벌써 다다랐습니다! 주변 마나석과 상자들은 모두 부숴 소울

과 마나를 많이 얻은 스테이지였어요~ 



마지막으로 유닛들의 총 공격!!!!! ㅎㅎ 뒤에 마지막은 화려하게 이럽션으로 마무리 하였는데~ 허둥지둥 

하다보니 순식간에 스테이지 클리어가 되었어요ㅠ 그런데 엉뚱하게도 클릭을 눌러 스테이지 클리어와

퍼펙트 달성한 모습을 캡쳐하지 못했네요 ㅠ 



스테이지 12에 보이는 페펙드 달성! 이렇게라도 인증을ㅎㅎ  처음 진행부터 끝까지 2배속으로 하다보니 

그렇게 많은 시간이 소요되지도 않고 재미있게 게임을 즐길 수 있었어요~!! 

스테이지 시작 전 제가 450골드를 가지고 있었기 때문에 이번 판 저의 추가 획득 골드는 무려 900골드!!

두둥~!ㅎㅎ 골드 많이 모았을 때가 기분이 제일 좋네요^0^

우리 함께 더욱 즐겁게 게임하며 골드도 많이 모아 자신의 유닛들을 최고의 능력치로 만들어 보아요!^^




알 수 없는 사용자 게임 이야기