[유니티] Unity create a game series (sebastian lague)



Unity Create a Game Series

https://www.youtube.com/watch?v=SviIeTt2_Lc&list=PLFt_AvWsXl0ctd4dgE1F8g3uec4zKNRV0

https://github.com/SebLague/Create-a-Game-Source


와 한글 번역 해주신분 감사합니다.

튜토리얼도 알차고 매 에피소드마다 코드 히스토리도 github에 올라와있고 이 튜토리얼로 공부한 한글 블로거들도 있어서 뭔가 문제에 부딪혔을때 검색해보거나 물어볼수도 있지 않을까 하는 기대감(?)



영상 러닝타임 약 5시간, 실제 따라 만들려면 하루 이틀이면 되려나. 생각좀 해보자.

00 Intro 1:31

01 Player controller 15:09

02 Gun system 14:43

03 Enemies 12:59

04 Damage system 10:06

05 Spawn system 10:41

06 Enemy Attacks 16:19

07 Some loose ends 10:37

08 Tile map 12:04

09 Obstacle placement 15:03

10 Map connectivity 17:04

11 Map navigation 14:40

12 Finishing the map generator 18:42

13 Random spawning 20:24

14 Game over 14:43

15 Particle death effect 13:24

16 Weapon effects 20:38

17 Weapon variation 12:41

18 Wave difficulty 16:04

19 Crosshairs 14:20

20 Recoil and reloading 22:12

21 Guns and UI 22:16

22 Audio pt1 17:30

23 Audio pt2 17:22

24 Menu 31:20

25 finishing up 31:12

저작자 표시 비영리 변경 금지
신고

[유니티] Playmaker

유니티용 플러그인 Playmaker를 질렀다 (65달러에서 45달러로 할인중이었음)

프로세싱으로 만들어둔 데모를 이제 본격 유니티의 세상으로 옮겨야하는데 java랑 C#이 그나마 비슷하다고는 해도 새로 배워야할 개념이 많아져서 허우적대는중

비주얼 프로그래밍이라고해서 Max/msp 같은건가 싶었는데 FSM 개념을 담은 Flow-chart?..

State Action Event간의 관계가 헷갈려서 듣던 튜토리얼을 멈추고 블로그를 뒤적거리며 개념 정리하는 중.



[데브루키] 유니티와 Play maker를 이용한 쉽고 빠른 게임 개발 - Slideshare

introduce unity3D and playmaker basic - Slideshare

Hutong Games사의 튜토리얼 페이지



  • 함수 단위가 아닌 FSM 단위로 비주얼 프로그래밍 가능

  • GameObject FSM (Finite State Machine : 유한상태기계) 컴포넌트 하나 추가한 것이 하나의 FSM 객체가 된다. 한 게임 오브젝트에 여러 FSM 객체를 만들수도 있으며 일종의 레이어처럼 사용할수있다 (FSM1 캐릭터의 상태 변화제어, FSM2 캐릭터의 행동변화 제어)

  • FSM : State가 특정하게 제한된 것을 Finite State라 하며, 정해진 절차에 따라 반복적으로 그 일을 수행하는 Machine



  • State : FSM에서 하나의 상태를 표현하는 객체. 여러 action과 transitino으로 구성됨
  • Action : State에서 수행할 하나의 작업을 표현하는 객체. (오브젝트 이동 회전 등등등)
  • Transition : State에서 다른 State로의 이동. Transition에 지정된 Event가 발생했을때 다음 State로 넘어감
  • Event : Mouse down..FINISHED 등
  • Variable : 변수(Global도 따로 지정 가능). FSM이 아닌 곳에서도 객체 참조하여 값 얻을수 있음 


  • Animation event를 Playmaker로 전달 : animation event 함수를 PlaymakerFSM 함수중 SendEvent로 지정

  • 모든 PlayMakerFSM 컴포넌트로부터 Action 조회하기

foreach (var fsm in Component.FindObjectsOfType<PlayMakerFSM>())
{
    if (!fsm.Fsm.Initialized)
        fsm.Fsm.InitData();

    foreach (var state in fsm.FsmStates)
    {
        foreach (var action in state.Actions)
        {
            // use action
        }
    }
}

  • 마우스 클릭한 위치에 있는 오브젝트 찾아서 PlayMakerFSM에 이벤트 전달

if(Input.GetMouseButton(0)) {
   ray = Camera.main.ScreenPointToRay(Input.mousePosition);
   if (Physics.Raycast(ray, out hit, 5000)) {
    Debug.Log("name : " + hit.collider.name);
    //PlayMakerFSM fsm = hit.collider.GetComponent<PlayMakerFSM>();
    //fsm.SendEvent("이벤트명");

   }
  }


저작자 표시 비영리 변경 금지
신고

[자료] 유니티 UI 디자인 교과서 - 예제 코드


유니티 내장 UI 프레임워크 uGUI


책 링크 (http://wikibook.co.kr/UGUI/)

GitHub (https://github.com/wikibook/ugui


Chapter 1

  • Rigid Body의 Is Kinematic : 다른 오브젝트에 물리적 작용은 하지만 자신은 공간에 멈춰 있음

  • float yAngle = rotationSpeed * Time.deltaTime;   

    transform (0.0f, yAngle, 0.0f);

    //Time.deltaTime은 이전 프레임이 끝난 후 지금까지의 시간(초)


  • 인스펙터 뷰에서 private이나 protect 값이라도 앞에 [SerializeField] 넣으면 수치 변경 가능 
  • CubeGenerator
  •  


    public class CubeGenerator : MonoBehaviour

    {
        [SerializeField] private GameObject cubePrefab;    // 상자 프리팹
        
        public void Generate()
        {
            // 상자 프리팹을 인스턴스로 만든다
            GameObject obj = Instantiate(cubePrefab) as GameObject;
            // 인스턴스를 「CubeGenerator」오브젝트의 자식 형태로 추가
            obj.transform.SetParent(transform);
            // 인스턴스의 스케일을 프리팹에 맞춘다
            obj.transform.localScale = cubePrefab.transform.localScale;
            // 인스턴스의 위치를 CubeGenerator 오브젝트에 맞춘다
            obj.transform.position = transform.position;
            // 떨어질 때마다 변화하도록 회전 각도를 무작위로 지정
            obj.transform.rotation = Random.rotation;
        }
    }

  • Input Controller 
  •  using UnityEngine;


    public class InputController : MonoBehaviour
    {
        void Update()
        {
            if(!Application.isMobilePlatform)
            {
                // 모바일 플랫폼이 아닐  실시할 처리
                if(Input.GetMouseButtonUp(0))
                {
                    // 마우스 왼쪽 버튼을 눌렀다  상태라면
                    // CubeGenerator 컴포넌트에 포함된 Generate 메서드 호출
                    GetComponent<CubeGenerator>().Generate();
                }
            }
            else
            {
                // 모바일 플랫폼일  실시할 처리
                if(Input.touchCount >= 1)
                {
                    Touch touch = Input.GetTouch(0);
                    if(touch.phase == TouchPhase.Began)
                    {
                        // 터치가 시작된 상태라면 CubeGenerator 컴포넌트에 포함된
                        // Generate 메서드를 호출
                        GetComponent<CubeGenerator>().Generate();
                    }
                }
            }
        }
    }

  • 이벤트 메서드 
  • - Awake : 오브젝트의 인스턴스가 로드됐을 때 한번 호출.  씬에 배치된 게임오브젝트에 추가된 스크립트라면 씬이 시작될때 호출되고 프리팹에 추가된 스크립트라면 인스턴스로 만들어진 직후에 호출됨. 비활성화일때는 호출되지 않고 처음 활성화된 시점에 호출  

    - Start : 첫프레임이 지나가기전 한번만 호출

    - FixedUpdate : 게임 오브젝트가 활성화되어있는 동안 고정 프레임율에 맞춰 호출

    - Update : 게임오즈젝트가 활성화되어있는 동안 프레임마다 호출

    - LateUpdate : 프레임마다 Update 메서드가 처리를 끝내면 LastUpdate 메서드가 호출됨. Update 메서드에서 변경된 내용을 처리에 반영하고 싶을떄 사용 

    - Awake가 호출된 시점에서 생성될 오브젝트의 인스턴스는 모두 생성된 상태가 되므로 이 시점에서 다른 오브젝트를 참조할수는 있으나 각 오브젝트에 연관된 Awake 메서드가 호출되는 순서가 정해진 것이 아니므로 참조되는쪽 오브젝트 처리가 안끝났을수도 있음. Awake메서드에서는 자신의 초기화 하고나서 다른 오브젝트로 연결되는 참조를 얻어내기만 하고 정보를 얻어내는 일은 나중에 호출되는 Start에서 하는 것 권장 


Chapter 2


  • 레이어별 렌더링 순서를 코드로 변경 

    obj.transform.SetAsFirstSibling(); //맨먼저 렌더링. 가장아래쪽.

    obj.transform.SetAsLastSibling(); //맨나중에렌더링. 가장위쪽

    obj.transform.SetSiblingIndex(2);  //계층에서 3번째요소가 되는 위치에. 아래에서 세번째로 렌더링.


  • 캔버스 렌더링 모드 
  • - Screen Space 

     : Overlay 모드. 화면 전체 덮는 레이어. Pixel perfect는 선명하나 퍼포먼스 많이 차지. Sort Order 는 0부터 아래쪽 순서로

     : Camera 모드 : 지정된 카메라와 일정한 거리만큼 떨어져 렌더링됨. Sorting Layer 추가하여 거리와 상관없이 렌더링 순서 제어 가능. 

    - World Space 모드 : 다른 게임 오브젝트와 동일한 자격. 



저작자 표시 비영리 변경 금지
신고

[유니티] Vuforia 마커 테스트

https://developer.vuforia.com/


http://dark0946.tistory.com/292


vuforia사에서 제공하는 unity용 AR 마커기능 테스트


* 덧 : 여러개 마커 동시 인식할때는 AR camera 에서 꼭 이미지타겟 맥스 값 추가해줄것!



홈페이지에 가서 개발자 라이센스 등록후 타겟 설정.

이미지, 큐브, 원기둥, 뷰포리아 전용 앱으로 스캔한 3d object를 트래킹 대상으로 설정할 수 있음 


6면체에 각각 이미지를 등록하고 데이터를 다운받아 유니티에 import



db를 불러오면 타겟이 화면에 뜨고, 그 타겟 아래 차일드로 원하는 3d object를 넣는다. 



싱글 이미지 테스트


폰 화면 안에 넣은 싱글 이미지


안약통에 프린트한 그림 붙인 육면체도 잘됨 

 자유로운 회전에는 육면체가 좋은듯 


multi target 테스트


레고로도 과연 될까 



레고 각 면의 사진을 찍어서 기울어진걸 보정하고 큐브에 붙였는데

features (특징이 되는 점) 가 부족해서 잘 인식이 안됨.

컬러로 인식하는게 아니라 그레이스케일에서 대비가 되는 점들로 인식하는거였음



그럼 좀 더 자잘하게. 

작은 플레이트도 더 사고 뚜껑 덮을 1칸짜리 타일들도 좀 더 사야할듯 

사진을 대충찍어서 늘렸더니 우글쭈글

별이 두개 더 올라가긴 했는데 여전히 부족한 포인트..


아주 힘겹게 가끔 인식된다.



저작자 표시 비영리 변경 금지
신고

[유니티] 플랫폼별 전처리기

피씨에서는 마우스나 키보드 인풋이고, 폰이나 타블렛에서는 터치 인풋을 받으려면 아래와 같이 플랫폼별로 다르게 작성해줘야함


http://docs.unity3d.com/Manual/PlatformDependentCompilation.html


using UnityEngine;

using System.Collections;


public class ClassName : MonoBehaviour {

  void Start () {


    #if UNITY_EDITOR

        Debug.Log("Unity Editor");

    #endif


    #if UNITY_IPHONE

        Debug.Log("Iphone");

    #endif

     #if UNITY_ANDROID

        Debug.Log(“Android");

    #endif


      #if UNITY_WEBPLAYER 

        Debug.Log(“web player");

     #endif


     #if UNITY_STANDALONE_OSX

       Debug.Log("Stand Alone OSX");

    #endif



  }            

}


저작자 표시 비영리 변경 금지
신고

[유니티] 네트워크 The Basics of Unity 5 Networking



네트워크 프로그래밍 난생처음 맛보기..

유투브에서 30분 분량의 튜토리얼을 보고 그대로 따라 해보긴 하는데 실제로는 기초 지식이 필요할것 같다 




The Basics of Unity 5 Networking


https://www.youtube.com/watch?v=JlKf0h0K5PU


Import Asset > CrossPlatformInput

drive.cs 작성. pika 오브젝트에 스크립트 add


오브젝트 Add component > Network > network identity

local player authority 체크

add > network > network transfer

transform sync mode : sync transform

Create Empty  > 이름 NetworkManager

여기에 Add > network>network manager

Add>network>network manager HUD


오브젝트를 프리팹으로 만들어놓고 비활성화

NetworkManager 오브젝트 > Spawn Info > Player Prefab 칸에 pika 프리팹을 드래그


BUILD할때 FULLSCREEN해제

하나는 호스트 접속. 하나는 클라이언트 접속해서 방향키 테스트 해보기

(이때 스폰되는 좌표가 0,0,0이어서 카메라뷰에 안들어오는 바람에 처음엔 오류로 착각했음


그리고 둘이 같은 키보드 인풋을 받기 떄문에 동시에 움직이는 문제가 발생한다

pika 프리팹에서 Drive 스크립트 비활성화

그리고 새로운 스크립트 만들기 > 이름 SetupLocalPlayer



이 코드를 pika 프리팹에 드래그앤드랍하고서 플레이해보면 스폰된 clone 오브젝트 클릭해보면 아까 비활성화했던 drive 스크립트가 자동으로 활성화됨.

빌드해서 호스트+클라이언트 테스트해보면 이제 따로 움직임


프리팹에있던 pika를 다시 씬으로 꺼내서 child에 3d Text꺼내서 Player 입력 


이제 회전을 해도 같은 방향으로 보도록 수정해야함

새 스크립트 faceCamera.cs 만들어서 카메라 방향으로 rotate되도록 코드 작성


name 차일드 오브젝트에 이 코드 붙여줌


플레이어 이름 입력받기

SetupLocalPlayer열어서 OnGUI와 Update에 키보드 인풋으로 이름 바꾸는 코드 작성

//OnGui()를 OnGUI()로. 대소문자 유의



SetupLocalPlayer  다시 열어서 여러개의 이름 받을수있도록 하기 

[SyncVar] 추가해주고 public으로 변수. pname이 바뀌면 서버에서 모든 클라이언트에게 이 변수를 동기화하라고 하는 one-way direction.

저장하고 나오면 SetupLocalPlayer컴포넌트에 Pname player SyncVar가 생김



그다음 현재 구현된 GUI는 매 업데이트마다 텍스트를 보내는 형식이라 비효율적이므로 버튼 누르면 바뀌도록 작성 


버튼 + [Command]  

CmdChangeName(pname); 으로 클라이언트로부터 서버에 텍스트 보냄 

이 [SyncVar]와 [Command]관계를 이용해 게임에서 응용 가능 


1. 첫번째 테스트 : local host로 2명의 유저 접속


 유니티에디터에서 맥 app으로 빌드 (이때 카메라 뷰를 살짝 다르게 해줘봤음) -> 유니티에디터에서 게임 플레이 -> 아까 빌드한 맥 app 재생 -> 에디터의 게임뷰에서 LAN Host 실행 -> 맥 app 에서는 localhost로 LAN client 실행 하고나면 맨 첫 이미지처럼 두 캐릭터가 나타나며, 초기 위치는 동일





160809 추가


2. 두번째 테스트. localhost가 아닌, usb로 연결된 스마트폰과 맥을 unity remote로 연동



우선 unity remote (https://docs.unity3d.com/Manual/UnityRemote4.html) 를 안드로이드폰 (테스트는 nexus 7으로 했음) 에 설치하고 개발자 설정에 가서 usb 디버깅 가능하게 체크 -> 맥에는 안드로이드 빌드 환경이 되어있어야 함 (android sdk와 java sdk) -> 유니티 옵션에서 안드로이드 sdk 경로 지정해줌. 혹은 안드로이드로 빌드 설정하면 sdk 경로 지정하라고 뜨기도 함. -> 이때 identifier 이름 제대로 지정되어있나 다시 확인잘해보고 -> 안드로이드에서 unity remote 켜놓고 맥에서 build & run 하면 폰화면에 실행됨!


맥에서 LAN Host + 안드로이드에서 Client 옆칸에 맥 ip주소 입력

안드로이드에서 LAN Host + 안드로이드에서 폰 ip 주소 입력.

둘이 usb 연결되어있어서 같은 localhost로 될줄 알았는데 안되는거 같다.


3. 세번째 테스트 : 안드로이드용 apk로 설치하여 외부 접속


맥은 안드로이드 폴더에 접속이 바로 안되서 android file transfer(https://www.android.com/filetransfer/)를 깔면 된다는데 이유는 모르겠으나 안되서 인터넷으로 apk 파일 업로드 (이때 확인되지 않은 외부 앱 사용용가능하도록 안드로이드 보안 설정 바꾸어주어야 함) 다운로드하여 설치 .


2번처럼 잘 됨 :) 


4. 네번째 테스트 : 웹 브라우저


PC <> Mac <> web 다 됨



(여기서부터 과정은 암유발..지저분한 링크들..)


1) 유니티 에디터에서 웹플레이어 버젼 빌드 (튜토리얼  https://www.youtube.com/watch?v=8u06DdPy7ec

이때 switch platform 선택. 폴더 지정해주면 html 파일과 unity 파일 두개가 생긴다.


2) 이제 이 두 파일을 웹에 올려야 하는데.. 


일단 크롬은 유니티 웹플레이어가 지원이 안되서 사파리, 파이어폭스, 익스플로러로 열어야 함. 그리고 모바일 브라우저도 안됨. 


2-1) 로컬에서 열기 (내컴퓨터)


유니티 웹플레이어가 깔려 있어야 하고 ( http://unity3d.com/kr/webplayer)

실행하려면 자바 보안 설정 변경해야함 : 윈도우 시작메뉴 -> 자바구성 실행 -> 예외사이트에 http://webplayer.unity3d.com 추가

https://www.java.com/ko/download/faq/exception_sitelist.xml

맥, 윈도우 둘다 로컬에서 열어서 호스트 ip만

입력하면 잘 연결됨 


2-2) 드랍박스에서 열기 


http://answers.unity3d.com/questions/954694/is-it-still-possible-to-host-web-player-builds-thr.html

맥과 윈도우 둘다 잘 안됨. pro 계정으로 업그레이드 해야 호스트 기능이 사용 가능한듯?


2-3)  구글드라이브에서 열기 


https://www.youtube.com/watch?v=8u06DdPy7ec 이 예전 영상에서는 구글드라이브에서 바로 호스팅 주소를 따올수있었는데 ui가 바뀌면서  http://answers.unity3d.com/questions/937188/unity-web-player-on-google-drive-not-loading.html http://kkangeva.tistory.com/24  이 게시물처럼 해당 파일 id를 따서 주소를 고쳐서 사용해야 한다. 이때 한참 애를 먹었던 부분이 html 파일 주소 아이디로 했더니 web player는 뜨는데 로딩이 안되는 현상. 결국 폴더 id로 새주소 만든 다음에  /파일이름.html  이렇게 바꾸어줘야 잘됨.

어쨌든 구글도 구글도 2016년 8월 31일 까지만 지원하고 그 이후로는 안된다고하니 어서 버려야겠다


2-4. 개인 호스팅 


결국 내 홈페이지에 ftp 로 올려서 하니까 진짜 2초 만에 잘된다. 으 날린 네시간이 아까워.

사실 ftp 도 하도 오랜만에 써서 아이디 비번도 까먹고 맥 ftp 앱 윈도우 ftp 앱 뭔가 둘다 잘 안되고 새로 받은 filezilla만 잘되네. 이유는 모르겠다. 



모두 모여라





저작자 표시 비영리 변경 금지
신고

[유니티] 엑셀 파일을 XML로 변환하는 사이트 MR.Data Converter





http://shancarter.github.io/mr-data-converter/

엑셀 파일에서 원하는 셀들을 선택해서 사이트 상단에 붙여넣으면 아래쪽에 원하는 포맷으로 바뀌고 텍스트를 복사하여

Xml 포맷을 작성할수있는 텍스트 에디터로 붙여넣기해서 저장하면 된다.



일단은 그냥 깔려있던 Xcode로 하긴 했는데 저장이 수월하지 않다. 

유니티 공부가 좀 끝나면 코딩용 텍스트 에디터를 뭘로쓸지 탐색해봐야할듯. (UTF-8형식으로 저장하면 된다고 함)





저작자 표시 비영리 변경 금지
신고

[유니티] 초보자를 위한 유니티 C# 스크립트 강좌 수강






거의 일년전에 배우다만 유니티에 다시 도전. ([지난글] : 유니티4 기초테크닉 80 + Roll a Ball + zombie run)

지난주부터 유니티4 기초테크닉 수업을 첨부터 다시 듣고, 3d 캠퍼스 프로젝트를 살짝 업그레이드했다.

ibatstudio 강좌가 꽤 맘에 들어서 스크립트 강좌도 55불에 결제했다.

(유투브에도 강좌가 꽤 있긴 하지만...돈 들이면 아까워서라도 더 열심히 하겠지.......)

한번 결제해놓으면 동영상 파일을 다운받아서 무제한으로 들을수 있게 되어있다.

단지 아쉬운 건 지난 epub 버젼과 달리 텍스트 버젼이 없어서 

추후에 급히 배웠던 내용을 찾아보기가 어려울 것 같음

에버노트에 정리하면서 들어야할듯


http://www.ibatstudio.com/csharp/

자바랑 그나마 조금 비슷해서 다행이다.









저작자 표시 비영리 변경 금지
신고

2학기 기초 프로그래밍 수업 종강



CT학생 중 비 이공계생들을 대상으로하는 무학점 수업인 기초 프로그래밍 이번 학기 수업이 오늘 끝이 났다. 이제 앞으로는 아무도 이렇게 친절하게 알려주지 않을 것이라는 사실이 너무 무섭고 들판에 내던져진 기분이다.

아직까지 제대로 할줄 아는게 없다고만 생각했는데 오늘 배운걸 정리하려다 보니까 과거를 거슬러가서 나의 프로그래밍 도전의 역사를 뒤돌아보게 되었다. (원래는 방학때 1학기 결과물과 과정들을 프로젝트 별로 블로그에 정리 하려했으나........)


아래는 생각나는대로 써본 프로그래밍 삽질과 도전의 역사


- 대학교 1학년. 프로세싱 첫 만남. 점찍고 색칠하는것 외에는 이걸로 뭘 할수 있는건지 왜 하는건지 아무것도 이해하지 못함.

- 대학교 3학년. 플래시 사이트를 만들어야하는데 액션스크립트를 다룰줄 몰라서 그냥 손 노가다로 인터랙션을 일일히 연결함

- 회사에서 UX디자인을 해야하니까 전반적인 IT기술에 대해 공부할 수 밖에 없고, 개발자와 함께 일하고 그들의 사고 방식을 이해하기 위해 노력해야했음

- 오픈컬리지에서 Xcode 2-3번 따라 해보기. 코딩에 대한 이해는 없는 상태이고 UI적인 경험 정도

- 대학원 입학 직전, Code.org에서 유치원 및 초딩을 위한 소프트웨어 코스를 간단히 들어봄. 언어는 모르지만 함수, 조건, 반복문 등의 개념과 유용성에 대해서 처음으로 이해함. 왠지 이걸 잘 다루게되면 디자이너들이 하는 삽질들이 언젠가 좀 줄어들지 않을까하는 희망같은 것을 보았음.

- 대학원 입학 진짜 바로 직전, 5일짜리 워크샵에 참여해서 Arduino를 처음 만져봄. 와 LED에 불이 켜진다..

- 혼자 집에서 프로세싱 책 사서 1/3 쯤 따라해봄. 이미지 드로잉 & 움직임 정도.

- 입학해서 기초프로그래밍 수업에서 Java를 통해 주요 구문들과 객제지향..함수..클래스를 접하지만 벽을 느낌.. 혼신의 힘을 다해 쉽게 설명해주는 익범&진우 스승 감사...

- 직접 코드를 입력하지 않고 노드를 연결하는 방식으로 프로그래밍하는 Max/msp를 배워서 완결성있게 동작하는 무언가를 첨으로 완성해봄 (아두이노, 웹캠 연결)

- 이래서는 안되겠다 싶어 방학때 다시 프로세싱 책 사서 1/2쯤 따라해보다가 함수와 알고리즘에서 또 막힘..(역시 난 안돼)

- 방학 때 프로세싱 위주로 작업하는 우리 랩 사람들과 함께 유니티 3D를 스터디 하기 시작했으나 2개 예제 정도 같이 해보고 중단된 상태. 

- 방학 때 동아리 프리스텝에서 개인 프로젝트로 제안한 책보게하는 아이디어제품을 아두이노, makey makey, max/msp로 인터랙티브 프로토타이핑까지 해보고 또 홀딩

- 2학기가 시작되고 1학기때 들었던 기초 프로그래밍 수업을 한번더 재수강(?) 다시 들으니 90프로 정도 잊혀졌다. 반복하면 안하는것보다는 낫겟지........ 지난학기보다는 정올 사이트에서 예제를 직접 풀어보는 방식을 많이 도입. 처음 할때보다는 그래도 어떻게 해야겠다는 구조는 조금 잡히는 편인데 여전히 문법이 익숙하지 않음

- 산디과 학부 청강하면서 아두이노의 기초와 전자공학의 아주아주 기초를 다시 시작함. 납땜은 할수 있게 됐지만 어쨌든 복습을 잘안해서 이해도는 20프로 정도.......

- 산디과에서 프로세싱 진도도 나가고 있지만 수업시간에 대학원수업 논문 제출, 행사, 등등의 핑계로 과제 제출도 못하고 수업도 제대로 못들어서 이제 점점 포기 상태..

- 3D인터랙션에서 하드웨어가 들어가야해서 납땜도 엄청 많이하고 제품 구성에 대한 고민과 연습 많이 하기 시작, 시간은 여전히 오래 걸리지만 실험에 필요한 간단한 기능은 스스로 구현할 수 있게 됐다 

- 3D인터랙션에서 AR, VR의 구현 원리, 알고리즘에 대해서 이해가 필요하게 됐는데 (내가 직접 만들건 아니지만 기획, 인터랙션 디자인, 시나리오 작성, 논문 작성 등 모든 단계에서 기술적인 이슈가 항상 크게 좌우하기 때문에 꼭 잘 알아야한다) 유치한 질문을 할때마다 기초프로그래밍 스승님이신 전선생이 수업때처럼 원리를 잘 설명해줘서 너무 좋드아.. 


향후 계획
- 이번 학기 남은 한달간 정도는 코딩보다는 디자인과 실험 논문 작성 영상 제작 등에 최선을 다해야해서 더 연습할 시간은 없을것 같고 연말에 교수님이 귀국하시기전에 프로세싱 책 나머지 부분은 꼭 마스터를 해서 기존에 연구실에서 하던 연구를 응용하는 무언가를 하나 직접 만들어보는 것이 목표 ....이고 유니티로 넘어가고자 한다. 유니티는 지금은 3D게임제작툴로 인기가 많긴 하지만 2D게임도 만들 수 있고 플랫폼에 상관없이 실행가능한 모바일용 앱을 만들 수도 있다고 한다. 좀 더 응용하면 다른 센서나 HMD등과도 연결 가능. 꼭 연구에 직접적인 영향이 없더라도 앞으로 무얼하든 프로토타이핑 툴로써는 유용하게 쓸수 있을것 같다. Java에서 C++로 언어가 바뀌는게 가장 크리티컬하지만 그래도 눈으로 보이는 결과물을 확인하면서 만들어갈수있다는 장점이 있다고 한다.
- 방학동안 스킬을 최대한 습득해야 그 능력 안에서 실현 가능한 연구 범위를 설정할 수 있을것 같다. 물론 연구 주제가 확정이 되면 그에 맞는 프로토타이핑 제작을 위한 것들은 다시 배워나가야 한다. 그러는 일년 사이 또 좋은 프로토타이핑 툴들이 많이 나오기야 하겠지만..
여러모로 노력해봐도 딱히 내 사고 방식이 개발에 전혀 어울리지 않고 소질도 없고 막 즐겁지도 않다는것을 깨달아 가고 있고, 이 삽질 시간들을 모으면 괜찮은 디자인 프로젝트를 여러개 완성할 수 있었을텐데 하는마음도 들긴 하지만.. 일단 여기에 온 이상 잘 안되고 잘 모르더라도 무식하게 100번 200번이라도 반복해서 익숙해져보자는게 지금의 전략이다. ㅠ ㅠ (그래야 졸업(및 탈출)을 할 수 있기도 하고...)

내가 이렇게 바닥을 기면서 흙 주워먹고 있는 동안 공대 출신 아이들은 가상현실이다 머신러닝이다 하면서 우주를 날라다니고 있어서 의기소침하기도하고
연구실 컴에서 이런 유치한거 만들고있으면 엄청 쪽팔리기도 하지만..
배움에 도전할 수 있는 기회가 있다는 그 자체에 감사하면서
뻔뻔하게 잘 버텨보아야겠다








저작자 표시 비영리 변경 금지
신고

'스터디' 카테고리의 다른 글

2학기 기초 프로그래밍 수업 종강  (0) 2015.11.18
[prestep] R studio 웹크롤링 맛보기  (0) 2015.11.16

[유니티] 유니티4 기초테크닉 80 + Roll a Ball + zombie run


150819


1. <유니티 4 기초테크닉 80> (링크) 

교재 및 영상으로 우선 기초 계속 다지기, 기초 개념이나 팁들을 잘 끊어서 설명해줘서 좋다

내일 스터디 모임 전까지 Roll a ball 튜토리얼 다해보고 가야하는데 그 젤 쉽다는 튜토리얼도 나한테는 어려워서 최대한 테크닉 진도는 서둘러 나가둘수록 좋은것 같다 









잘 이해 안되는 (안 익숙한) 부분, empty object가 스크립트랑 연결된다는건 어떤 의미인거지.. 

그리고 스크립트 쓰고서 변수 필드에 드래그앤 드랍해서 오브젝트를 껴넣는데 그것도 내가 뭐하고있는건지 알수없지만 일단 시키니까 따라해본다..  자꾸 반복되면 왠지 감으로 알게될것만 같은 느낌..(ㅠㅠ)



요 교재 진도가 완료가 되고 나면 새로나온 5 강좌도 구매해서 복습할겸 프로젝트랑 병행해서 공부할 예정 http://www.ibatstudio.com/unity5/





저자가 올려두신 52분짜리 UNITY를 위한 C# 동영상 강좌도 http://meeis.tistory.com/65 








2. Roll a Ball  (https://unity3d.com/kr/learn/tutorials/projects/roll-ball-tutorial)



유니티에서 제공하는 튜토리얼에는 7개의 프로젝트와  Interface & Essentials에 대한 자잘한 영상들이 있다. 프로젝트중에 젤 쉬운 Roll a Ball 부터 시작

위의 책에 비해 엄청난 속도로 막 지나가버려서 계속 Pause를 눌러가며 힘겹게 따라함 ㅠ 

인터페이스 쪽은 그나마 책에서 따라하고있어서 그나마 익숙해지고 있는데 스크립트는 따라서 타이핑해봤자 아직 전혀 이해가 안되고 있다...

그대로 따라하기만 하는데도 자꾸 오류가 나는지......(알고보면 원인은 아주 사소한 오타나 체크박스 때문이긴하지만)




오브젝트가 중력이나 충돌 등의 물리적성질을 가질수있도록 세팅하고 오브젝트들의 관계를 유기적으로 설정해줄수있는게 유니티의 재미난점인것 같다


운동이나 각도를 다루는데에서 점차 수학이 등장하기 시작하니 멘붕.. 

영어+코딩+3D+수학까지 4중고



어찌어찌해서 게임은 완성 중간에 공을 키보드로 굴려서 노란색을 다 없애면 게임이 끝난다


유니티의 장점은  프로세싱이나 MAXMSP보다는 다양한 환경으로의 빌드가 용이하다는 것, 맥에서는 APP파일, 윈도우에서는 EXE파일로 재생가능하다. 

언능 배워서 웹이나 모바일을 위한 무언가도 만들어보아야지




3. Zombie Run





목요일 오전 스터디 모임, 반선배의 좀비 튜토리얼 

에셋스토어에서 무료로 다운받은 좀비 오브젝트로 간단한 게임을 만들어 보았다

1인칭 시점 카메라뷰의 플레이어가 키보드로 움직이면 좀비떼들이 쫓아오고 + 가까워질수록 좀비의 괴성이 커지도록

여기서도 등장하는 벡터. 와 무슨말인지 나만 몰라서 정석을 다시 꺼내어 울면서 공부를 따로 좀 해야할것 같으다..




좀비의 회전 각도 코드가 아직 약간 완성이 덜되어서 어느 위치에서는 좀 이상하게 회전되긴하지만..  선배님이 고쳐주시겠지 난 아직 저 코드의 의미도 다 모름 흑흑

튜토리얼 후 각자 앞으로 할 프로젝트에 대한 간단한 프로포절, 

선배들은 이미 진행중인 연구 주제에 맞게 준비들을 해왔는데 주영이랑 나랑은 아직 유니티로 뭘 할수있는건지 잘 모르기도 하고 진행중인 연구가 없다보니 일주일정도 더 생각해보기로 했다








저작자 표시 비영리 변경 금지
신고