전체 글 (202)

  • 2018.07.26
  • 2018.07.26
  • 2018.07.26
  • 2018.07.26
  • 2018.07.13
  • 2018.03.10
  • 2018.01.09
  • 2018.01.09
  • 2018.01.09
  • 2018.01.04
  • 2018.01.03
  • 2018.01.03
  • 07
    26

    【파이널판타지14】 탐험수첩 06번



    저지 라노시아 (23, 40)


    오쉬온등대를 향하는 다리를 지나 바로 앞 바위


    시간 : 밤(18:00~07:59)


    날씨 : 맑음


    감정표현 : 둘러보기


    스크린샷









    【파이널판타지14】 탐험수첩 06번

    반응형

    'Game > FFXIV' 카테고리의 다른 글

    [FFXIV] 탐험수첩 창천 29번  (0) 2018.07.26
    [FFXIV] 탐험수첩 창천 18번  (0) 2018.07.26
    [FFXIV] 탐험수첩 04번  (0) 2018.07.26
    [FFXIV] 탐험수첩 12번  (0) 2018.07.26
    [FFXIV] 탐험수첩 10번  (0) 2018.07.26
    COMMENT
     
    07
    26

    【파이널판타지14】 탐험수첩 04번



    중부 라노시아 (16, 17)


    위치 : 하늘승강기(스카이리프트) 상층 NPC 옆


    시간 : 낮(12:00~17:59)


    날씨 : 맑음


    감정표현 : 둘러보기


    스크린샷

    (날씨가 16시까지 비가 오다가 맑음으로 바뀌어 늦은 시간에 스크린샷을 찍게 되었습니다)







    【파이널판타지14】 탐험수첩 04번

    반응형

    'Game > FFXIV' 카테고리의 다른 글

    [FFXIV] 탐험수첩 창천 29번  (0) 2018.07.26
    [FFXIV] 탐험수첩 창천 18번  (0) 2018.07.26
    [FFXIV] 탐험수첩 06번  (0) 2018.07.26
    [FFXIV] 탐험수첩 12번  (0) 2018.07.26
    [FFXIV] 탐험수첩 10번  (0) 2018.07.26
    COMMENT
     
    07
    26

    【파이널판타지14】 탐험수첩 12



    검은장막 숲 동부삼림 (17, 18)


    위치 : 스크린샷 참고


    시간 : 아침(08:00~11:59)


    날씨 : 맑음


    감정표현 : 기도


    스크린샷








    【파이널판타지14】 탐험수첩 12번

    반응형

    'Game > FFXIV' 카테고리의 다른 글

    [FFXIV] 탐험수첩 창천 29번  (0) 2018.07.26
    [FFXIV] 탐험수첩 창천 18번  (0) 2018.07.26
    [FFXIV] 탐험수첩 06번  (0) 2018.07.26
    [FFXIV] 탐험수첩 04번  (0) 2018.07.26
    [FFXIV] 탐험수첩 10번  (0) 2018.07.26
    COMMENT
     
    07
    26

    【파이널판타지14】 탐험수첩 10번



    그리다니아 구시가지 (10, 6)


    아프칼루 폭포의 가로등 위


    시간 : 밤(18:00~07:59)


    날씨 : 쾌청


    감정표현 : 둘러보기


    올라가는 법(영상)




    스크린샷










    【파이널판타지14】 탐험수첩 10번

    반응형

    'Game > FFXIV' 카테고리의 다른 글

    [FFXIV] 탐험수첩 창천 29번  (0) 2018.07.26
    [FFXIV] 탐험수첩 창천 18번  (0) 2018.07.26
    [FFXIV] 탐험수첩 06번  (0) 2018.07.26
    [FFXIV] 탐험수첩 04번  (0) 2018.07.26
    [FFXIV] 탐험수첩 12번  (0) 2018.07.26
    COMMENT
     
    07
    13

    "사이툴 단축키에 대해 알아보자"


    사이툴(SaiTool) 프로그램에서는 기본적으로 단축키의 설정을 지원한다.




    대부분의 단축키의 정보를 위 메뉴에서 확인할 수 있고, 자유롭게 변경도 가능하다.


    기본적으로 저장되어 있는 단축키들은 다음과 같다.


    생각보다 많지 않으므로 참고하여 작업 시 유용하게 활용할 수 있다.


    심심찮게 쓰이는 단축키는 파란색, 자주 쓰이는 단축키는 빨간색으로 표시하였다.



    TAB > 조작 패널 숨김

    PageUp > 커서 위치를 중심으로 확대 (마우스 사용 시 휠로 조절 가능)

    PageDn > 커서 위치를 중심으로 축소 (마우스 사용 시 휠로 조절 가능)

    End > 시계방향으로 회전

    Home > 위치 초기화

    Insert > 회전 초기화

    Delete > 반시계 방향으로 회전

    1~0 > 붓농도 10%~100%

    D > 레이어 지우기

    F > 아래의 레이어로 보내기

    H > 좌우 반전

    I > 색상 고르기

    X > 전경색상/배경색상 전환

    Num1~Num0 > 붓농도 10%~100%

    F1 > 커서 위치의 항목에 관한 도움말 표시

    F11 > 풀 스크린

    - > 전경색상/투명색상 변환

    [ > 한 단계 작은 붓 크기를 선택

    ] > 한 단계 큰 붓 크기를 선택


    Ctrl +

    TAB > 다음 작업 영역을 선택

    0 > 위치 초기화

    A > 모두 선택

    C > 복사

    D > 선택 영역 해제

    E > 아래의 레이어와 합치기/레이어 세트를 합치기

    F > 레이어 채우기

    H > 선택 영역 표시

    N > 새 캔버스

    O > 캔버스 열기

    S > 캔버스 저장

    T > 자유 변형

    U > 색조/채도

    V > 붙이기

    W > 닫기

    X > 자르기

    Y > 다시하기

    Z > 되돌리기

    Num+ > 커서 위치를 중심으로 확대 (마우스 사용 시 휠로 조절 가능)

    Num- > 커서 위치를 중심으로 축소 (마우스 사용 시 휠로 조절 가능)

    ; > 커서 위치를 중심으로 확대 (마우스 사용 시 휠로 조절 가능)

    - > 커서 위치를 중심으로 축소 (마우스 사용 시 휠로 조절 가능)


    Shift +

    TAB : 풀 스크린


    Alt +

    Delete > 레이어 채우기


    Ctrl + Shift +

    TAB > 이전 작업 영역을 선택

    0 > 배율 초기화

    E > 표시 레이어를 합치기

    S > 캔버스를 다른 이름으로 저장



    단축키 설정에서 확인할 수는 없지만 다음과 같은 단축키들도 유용하게 사용되고 있다.


    마우스 휠 : 커서 위치를 중심으로 확대/축소

    SpaceBar + 마우스 좌클릭 드래그 > 화면이동 (방향키로도 이동 가능)

    Ctrl + Alt + 마우스 좌클릭 드래그 > 펜 크기 조절

    Ctrl + 마우스 좌클릭 드래그 > 레이어 이동

    Alt + 마우스 좌클릭 > 색상 고르기

    마우스 우클릭 > 색상 고르기



    또한 각 펜툴에 대해서도 우클릭>설정 또는 더블클릭을 하여 단축키를 지정할 수 있다.




    반응형
    COMMENT
     
    03
    10



    char *h = "Hello"; 대체 문제가 모냐공... ㅠ


    "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다.


    [초보자를 위한 C++ 200제 43p : 003 주석 이해하기]

    반응형
    COMMENT
     
    01
    09

    2D로 프로젝트를 생성한다.


    빌드세팅을 안드로이드로 스위치한다. 화면 크기도 조정한다.


    소스 파일(이미지,효과음)을 불러오고 씬 저장을 한다.


    불러온 이미지 소스파일을 씬에 배치한다.


    카메라에 비치는 배경색도 조정 해 준다.




    스크립트의 작성을 할 차례이다. 우클릭 후 C# 스크립트 생성 및 편집을 한다.


    파일명은 car.cs 로 지었다.


    마우스로 스와이프하여 자동차(반디캠 아이콘...)가 달릴 수 있도록 스크립트를 작성 해 보자.


    public class car : MonoBehaviour {


        float speed = 0;  // 자동차의 스피드 변수


    void Start () {

    }

    void Update () {

            if (Input.GetMouseButtonDown(0))

            {

                this.speed = 0.2f;

            }


            transform.Translate(this.speed, 0, 0);  //속도의 감속을 나타냄

            this.speed *= 0.98f;

    }

    }


    이것은 출발속도가 0.2로 정해진 코드이다.


    스와이프가 어떻든 터치한 즉시 자동차는 출발하여 0.2의 속력을 갖는다.




    이제 스와이프 길이에 따라 자동차 이동거리가 바뀌도록 수정하자.


    클릭을 시작한 좌표와 클릭이 끝난 좌표의 차이를 스와이프 길이로 이용한다.



    public class car : MonoBehaviour {


        float speed = 0;

        Vector2 startPos;


    void Start () {

    }

    void Update () {


            if (Input.GetMouseButtonDown(0))

            {

                this.startPos = Input.mousePosition;

            }

            else if (Input.GetMouseButtonUp(0))

            {

                Vector2 endPos = Input.mousePosition;

                float swipeLength = (endPos.x - this.startPos.x);

                this.speed = swipeLength / 500.0f;

            }


            transform.Translate(this.speed, 0, 0);

            this.speed *= 0.98f;

    }

    }


    자세한 설명은 생략하고, 코드가 완성되었다.






    반응형
    COMMENT
     
    01
    09

    서적에 주어진 예제는




    표시된 자동차를 스와이프하여, 깃발을 향해 달려나가게 하고,


    자동차는 점점 느려져 멈춥니다.


    깃발에 가까울 수록 고득점인 게임이에요.




    1단계 : 오브젝트의 나열


    - 🚙


    - 🏁


    - 지면


    - 떨어진 거리(안내문구)



    2단계 : 컨트롤러 스크립트(오브젝트를 움직인다)


    - 자동차에 적용할 스크립트



    3단계 : 제너레이트 스크립트(오브젝트를 생성한다)


    - 없음



    4단계 : 감독 스크립트(UI의 갱신)


    - 떨어진 거리



    5단계 : 스크립트를 만드는 흐름을 생각한다.


    - 자동차 컨트롤러를 만든 후 게임 씬 감독 스크립트를 만든다.





    이번 게임에서의 주된 과제는


    - 스와이프의 거리에 따라 자동차의 시작속도 결정 : 스와이프에 관한 코드


    - 텍스트로 이루어진 UI의 변동을 나타내는 방법


    - 뒷 내용을 보니 효과음도 들어간다고 하네요


    이렇게 세 가지가 될 것 같습니다.

    반응형
    COMMENT
     
    01
    09

    본인이 APK 파일을 생성하는 과정에서 발생한 오류를 해결한 방법 세 가지




    1.


    일단 경고창으로 


    gradle build failed. see the console for details


    뜨고 콘솔창을 확인하면


    package name has not been setup correctly


    메시지를 확인한 경우


    참고 : https://answers.unity.com/questions/162141/android-bundle-identifier-has-not-been-setup.html


    문제 : 패키지 이름의 잘못된 설정


    해결 : Player Setting - Other Settings - Package Name 의 수정


    과정 : [Ctrl + Shift + B]의 빌드 세팅 창에서 Player Setting으로 들어가 패키지 이름을 수정. 


    패키지 이름의 형태는 [com.개발팀명.앱이름]의 세 파트로 나눠진 형태를 따라야 하며, 알파벳/숫자/언더바(_)만을 사용 가능하다





    2.


    빌드 오류 후 콘솔창 확인


    unable to list target platforms. please make sure the android sdk path is correct


    참고 : http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=79671


    문제 : 안드로이드 스튜디오 업데이트 과정에서 Unity가 사용하던 기능이 사라진 것으로 추정


    해결 : 안드로이드 스튜디오 SDK 설치폴더(C:\Users\user\AppData\Local\Android\Sdk) 내 tools 폴더를 다운그레이드한다.


    다운로드 : http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip


    과정 : 기존 tools폴더의 이름을 바꿔주거나 지워준 후 , 다운받은 압축파일 안의 tools 폴더를 기존 tools 위치에 대체한다.





    3. 


    빌드 오류 후 콘솔창 확인


    CommandInvokationFailure: Gradle build failed. 


    could not determine java version from '9.0.1' unity


    등의 메시지를 발견한 경우


    참고 : 여러곳. 유니티가 아닌 경우의 사례도 빈번.


    문제 : 아마도.... 유니티에서 최신 자바 버전과 연동이 잘 안된 듯 함.


    해결 : 자바의 다운그레이드.


    과정 : 자바 9.0.1 관련 제어판에서 삭제, 자바 8 버전 재설치






    이제.. APK 파일 빌드 됩니다 흑흑.....




    안드로이드 기기를 찾을 수 없다는 에러는 해결 못하고 미지수로 남은 상태여서 Build And Run은 하지 못하는 상태이구요...



    보통 이렇게 여러가지가 꼬인 상태면 해결 과정중에도 꼬이고 꼬여 실패했는데, 이번에는 어떻게 잘 넘겼네요

    반응형
    COMMENT
     
    01
    04

    평범하게 유니티 실행 후 2D로 프로젝트를 생성한다.



    생성 후, Project 탭의 Assets으로 리소스 파일(이미지 파일)을 Import한다. 불러온다.



    이게, 드래그해서 되는 줄 알았는데, 프로젝트 탭의 Assets 내에서 우클릭으로 Import해야 되는 것 같다...



    안드로이드에서 동작하는 게임을 만들도록 설정한다.


    [File - Build Settings] 메뉴로 들어가 플랫폼을 Android로 선택 후 밑의 Switch Platform 버튼을 눌러준다.



    본인의 안드로이드 기기에 맞도록 화면 크기도 설정 해 주자. 



    현재 사용하고 있는 씬(Scene)을 저장하자.


    [File - Save Scene as]를 선택 후 씬 이름을 작성 후 저장하자.


    저장 위치는 기본으로 설정된 Assets 으로 적당하다.




    씬에 오브젝트를 배치한다


    Project 탭에 불러왔던 리소스들(이미지들)을 씬에 드래그하여 배치하자.


    각 스프라이트(개체)를 선택 후 우측의 Inspector 탭에서 위치, 회전, 스케일 조절이 가능하다.


    포지션을 0, 0, 0 으로 맞춰주고 작업을 시작한다.



    메인 카메라를 선택 후 Inspector 탭에서 배경색을 바꾸어준다.






    원형 룰렛을 회전시킬 스크립트를 작성한다.


    스크립트 작성의 최종 목표는


    Assets 에서 우클릭 후 C# 스크립트를 생성한다.


    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;


    public class Kaiten : MonoBehaviour {


        float rotSpeed = 0; //회전속도

        

    void Start () {

    }

    void Update () {

            //클릭 시 회전속도를 10으로 바꾼다

            if (Input.GetMouseButtonDown(0))

            {

                this.rotSpeed = 10;

            }


            //룰렛을 회전시킨다

            transform.Rotate(0, 0, this.rotSpeed);

    }

    }


    작성한 코드는 마우스를 클릭했을 경우 회전속도 10으로 회전을 시작하도록 한다.


    스크립트 작성이 완료되었으면 유니티로 돌아와 스크립트 파일을 Hierarchy 탭의 Circle 객체로 드래그&드랍하여 스크립트를 적용한다.


    스크립트가 제대로 적용되었는지 확인한다.



    마우스가 녹화되지는 않았지만 화면을 마우스로 클릭 시 회전을 시작하는 모습이다.



    스크립트의 편집을 계속 진행 해 보자.



    룰렛을 감속시킬 것이다. 


    여기에서는 회전속도에 수시로 감속계수를 곱하는 방법으로 속도를 줄여 보자.



    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;


    public class Kaiten : MonoBehaviour {


        float rotSpeed = 0; //회전속도

        

    void Start () {

    }

    void Update () {

            //클릭 시 회전속도를 30으로 바꾼다

            if (Input.GetMouseButtonDown(0))

            {

                this.rotSpeed = 30;

            }


            //룰렛을 회전시킨다

            transform.Rotate(0, 0, this.rotSpeed);


            //룰렛을 감속시킨다.

            this.rotSpeed *= 0.99f;

    }

    }


    속도에 프레임마다 0.99가 곱해지며 속도가 줄어들게 된다.





    안드로이드 기기에서 실행 해 보자.



    안드로이드는 '터치'하는 구조이지만 스크립트에서 쓰인


    Input.GetMouseButtonDown(0)


    를 마우스때와 같이 사용할 수 있다.



    [File - Build Settings] 에서 Platform 이 Android로 스위치 되어있는 것을 확인 후 Player Settings를 클릭한다.


    Other Settings - Identifier 에 com.Company.Circle(프로젝트명)을 입력한다.


    Build Settings 창으로 돌아와 Build And Run을 클릭하면 Apk파일의 생성과 동시에 안드로이드 기기에 넣기를 같이 할 수 있다.

    (본인은 실패)




    /////////////////////이후 이 프로젝트는///////////////////


    반응형
    COMMENT
     
    01
    03

    tmp

    반응형
    COMMENT
     
    01
    03

    제어문(if문, if~else문, for문, while문)에 관한 내용은 간단한 설명으로 넘어가겠다.



    제어문은 주어진 조건이 참인 경우 명령을 수행하게 된다.



    예를 들어 if문의 경우


    if(조건) {

    명령1;

    명령2;

    또다른명령3;

    {


    if 다음에 있는 소괄호 안의 조건이 '참'이라면 중괄호 { } 안의 명령들을 수행하게 된다.


    if(내가 민수보다 강의실에 먼저 왔다) {

    민수가 앉을 자리를 맡아놓는다;

    민수의 커피도 준비한다;

    민수가 올 때까지 기다린다;

    {


    와 같이, 내가 강의실에 먼저 도착했을 경우 다음과 같은 명령들을 수행하게 되는 것이다.


    실제로 쓰이는 것처럼 바꿔본다면,


    if(A<B) {

    A = B+1;

    B = 0;

    }


    위 내용은 A가 B보다 작은 경우 A는 B보다 1 크게 만들어주고, 그 후 B는 0이 되도록 한다.



    else문은 if의 다음에 쓰여 if문의 조건이 거짓인 경우 사용한다.



    if(조건) {

    명령1;

    명령2;

    {

    else {

    명령3;

    명령4;

    }


    else문 오른쪽에는 소괄호 ( ) 가 붙지 않는다. else 속 중괄호 { } 의 명령이 수행되는 경우는 오직 if문 옆의 (조건)이 '참'이 아닐 경우 수행하게 된다.


    if(오늘도 민수보다 먼저 왔다) {

    민수의 자리를 맡는다;

    민수의 커피도 준비한다;

    민수가 올 때까지 기다린다;

    {

    else {

    민수의 옆자리에 앉는다;

    인사를 한다;

    }


    else문에 포함된 명령 두 개는 민수보다 먼저 오지 않는 경우 수행하도록 프로그램되어 있다.



    else if문은 if문 이후에 쓰인다.


    if(조건) {

    명령1;

    {

    else if(또 다른 조건) {

    명령2;

    }

    else if(또 다른 조건) {

    명령3;

    }

    else {

    명령4;

    }


    else if문은 if문 이후에 쓰인다.


    if문의 조건이 거짓일 경우 else문으로 내려가듯이, 이 경우는 if문의 조건이 거짓이면 else if문의 조건을 따지게 된다.


    else if문이 else문과 다른 점은 또 다른 조건이 붙는다는 것이고


    이게 참이라면 역시 중괄호 { } 안의 내용을 수행하게 된다.


    else if문의 조건이 거짓이라면 중괄호 안의 내용은 무시하고 다음 제어문을 진행하면 된다.


    else문은 없어도 상관 없다.


    if(오늘도 민수보다 먼저 왔다) {

    민수의 자리를 맡는다;

    민수가 올 때까지 기다린다;

    {

    else if(민수와 동시에 도착했다) {

    함께 자리를 찾아 앉는다;

    }

    else {

    민수의 옆자리에 앉는다;

    인사를 한다;

    }






    for문은 반복형 제어문이다.


    for(변수 초기화 ; 조건 ; 갱신내용) {

    명령;

    }


    변수 초기화 : int number=1; 과 같이 변수 선언과 그 값을 지정해준다.


    조건 : 참일 경우 중괄호 { } 안의 명령을 수행하도록 조건을 넣는다.


    갱신내용 : number++; 처럼 반복 한 차례가 끝날 때마다 갱신할 내용을 넣는다.



    for( 배속이 거지이다 ; 만족스럽지 못하다 ; 싸이버거를 먹는다 ) {

    불평을 한다;

    싸이버거를 주문한다;

    }



    초기 상태 : 배속이 거지이다.

    조건 : 만족스럽지 못하다 → 참일 경우 중괄호 { } 내의 명령을 수행한다.

    싸이버거를 먹는다 : 중괄호 내 명령을 수행한 후 행할 명령이다.


    불평을 하고

    싸이버거를 주문하고

    싸이버거를 먹은 후에


    다시 조건문으로 돌아간다.


    ' 나는... 만족스럽지 못한가...? '


    이것이 참일 경우 다시 불평을 하면 된다.


    만족스러울 경우에는 그 시점에서 for문을 종료하면 된다.



    조건문이 참이 아니게 될 때까지 이것을 반복하는 게 for문이다.


    숫자로 예를 들면


    for ( int number=0 ; number<10 ; number++ ) {

    Debug.Log("I have "number" Apples");

    }


    number가 하나씩 증가하며 0Apple부터 9Apple을 출력하는 콘솔창을 볼 수 있게 된다.




    while문은 for문보다 간단하다. 


    while(조건) {

    명령;

    {


    조건이 참인 경우 명령을 수행하며 반복하고 조건이 참을 유지할 경우 계속 반복해주면 된다.


    이 경우, while의 중괄호 { } 안에서 조건을 바뀌게 해주는 명령을 넣는 게 보통이다.


    조건이 바뀌지 않는다면... 무한반복을 하게 될 테니까...





    배열은 변수의 상위호환정도로 생각하면 되겠다.



    변수가 많이 필요한 경우가 있다.


    int number1;

    int number2;

    int number3;
    int number4;
    int number5;
    int number6;
    int number7;
    int number8;
    .

    .


    이런 경우를 포함한 프로그래밍의 단순화를 위해 고안된 것이 '배열'개념이다.


    예를 들어 정수형(int형) 배열의 선언은 다음과 같이 한다.


    int[] number = new int[100];


    여기에서 new는 새롭게 만든다, 마련한다 라는 뜻으로 쓰여 이것을 풀어 쓴다면


    int형 배열number에게 새로운 int형 자리 100개마련한다


    정도가 되겠다.


    위와 같은 문장으로 100개의 정수형 변수를 얻을 수 있고 각각 변수의 이름은


    number[0] 부터 number[99]가 된다.


    number[1]부터가 아님에 주의한다. number[100]은 존재하지 않음에도 주의한다.




    반응형
    COMMENT