Post

반응형

using System.Collections;

using System.Collections.Generic;

using UnityEngine;


//public class NewBehaviourScript : MonoBehaviour {


    public class MoveScript : MonoBehaviour

    {

        public float moveSpeed = 2.0f;


        public float rotSpeed = 2.0f;


        Vector3 posTarget;




        void Awake()


        {


            //moveSpeed = 10.0f;


            posTarget = new Vector3();


        }




        // Use this for initialization


        void Start()


        {


            posTarget = transform.position;


        }




        // Update is called once per frame


        void Update()


        {


            // 느린컴퓨터는 Update에 느리게 들어오고 빠른컴퓨터는 빠르다...속도를 동일하게 하기위해


            // 시간계념이 필요함 (deltaTime)




            bool trans = false;


            if (trans)


            {


                float mx = Input.GetAxis("Horizontal"); // -1 ~ 1;


                transform.Rotate(Vector3.up * mx * Time.deltaTime * rotSpeed);


            }


            else


            {




                float mz = Input.GetAxis("Vertical"); // -1 ~ 1;


                float mx = Input.GetAxis("Horizontal"); // -1 ~ 1;




                Vector3 v = new Vector3(mx, 0, mz);


                v.Normalize(); // 원본 변경


                //v.Normalized(); // 원본 변경x


                transform.Translate(v * Time.deltaTime * moveSpeed);




                transform.Rotate(Vector3.up * mx * Time.deltaTime * rotSpeed);


                //transform.Translate(Vector3.forward * mz * Time.deltaTime * moveSpeed);


                //transform.Translate(Vector3.right * mx * Time.deltaTime * moveSpeed);




                // 마우스로 좌표찍어서 이동


                if (Input.GetButtonDown("Fire1"))


                {


                    Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);


                    RaycastHit hit;


                    if (Physics.Raycast(r, out hit))


                    {


                        posTarget = hit.point;


                        Debug.Log(hit.transform.gameObject);


                        // 방향을 돌린다


                        //transform.LookAt (new Vector3(posTarget.x, 0, 0));


                        //transform.LookAt (posTarget);


                    }


                }




            }


            // 선형보간 이동


            //transform.position = Vector3.Lerp (transform.position, posTarget, Time.deltaTime * moveSpeed);


            // 정규속도로 가기


            if (Vector3.Distance(transform.position, posTarget) >= 0.1f)


            {


                Vector3 dir = posTarget - transform.position;


                // 부드럽게 방향 돌림


                // 나의 앞 방향과 목표 방향과 normallize해서 어느정도 이동해야하는지 결과값이 나옴


                Vector3 look = Vector3.Slerp(transform.forward, dir.normalized, Time.deltaTime * rotSpeed);


                // up y축 회전


                transform.rotation = Quaternion.LookRotation(look, Vector3.up);


                transform.position = Vector3.MoveTowards(transform.position, posTarget, Time.deltaTime * moveSpeed);

            }


        }




        void OnGUI()

        {


            // 방향키 앞뒤 누를 시 -1 ~ 1의 을 출력


            GUI.Label(new Rect(0, 0, 150, 40), Input.GetAxis("Vertical").ToString());


        }


    }

//}



반응형

'이전게시판 > Unity' 카테고리의 다른 글

유니티 2D충돌체크, 코루틴  (0) 2018.04.29
유니티 스프라이트2D  (0) 2018.04.28
유니티 네비게이션, 파티클  (0) 2018.04.22
총알 만들고 쏘기(Prepfeb)  (0) 2018.04.21
Unity 기초 정리  (0) 2018.04.14
유니티 C# Scene 변경  (0) 2018.04.14
UGUI 캔버스, UI 정리  (0) 2017.10.11
유니티 UGUI 버튼 예제  (0) 2017.10.08

Post

반응형

[ 유니티 창 설명 ]

Componet : 기능을 넣어주는 것 ( 스크립트, Mesh 등 ... )

Game창에서 해상도 설정 가능 ( Portain 가로 , Landscap 세로 )

+ 누르면 해상도 지정 가능(Fixed Rsolution ), 종횡비(Aspect Resolution)

Hiarchy : Scene에 있는 작업물 ( Scene에서 보이는 것들 )

Project : Project의 모든 작업물 객체 모음

Inspect : 정보와 수정을 담당

States => 작업상황 (퍼포먼스 확인)


[ 안드로이드 빌드 시 필요한 것 ]

SDK, JDK, 때때로 NDK 설치 Extern Tool 에서 설치 위치 설정할 수 있음.


[에셋 가져오기, 불러오기]

Asset - Item to Export => 에셋 단위로 묶을 수 있음.

가져오기는 마우스 드래그로 가져오기 가능


[ Object 이동 ]

Object생성 시 반드시 reset할 것 (위치 초기화 필요)

X, Y, Z는 꼬치구이 돌리는 것 처럼 생각할 것


Q : 화면 움직이기

W : 이동

E : 회전

R : 늘리기, 줄이기

T : 2D에만 쓰임


Pivot :  두개 이상 모체 선택 시 처음 선택한 오브젝트 중심으로 이동, 회전

Global과 Local : Local말고 Global로 World 좌표계 사용하고 싶을 때 사용.



[ ProjectSetting ]

유니티에서 mouse 0 => left 1 => right 2 => 휠


[ 2D ]

2d스프라이트 SortLayer, Order in Layer 사용법 :숫자가 낮을수록 먼저 그림(맨 뒤로 가게됨)

Flip는 x, y 를 체크해서 방향을 바꾸면 방향축이 안바뀜(그냥 Y축 회전하면 방향이 바뀌게 된다)

반응형

Post

반응형
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneCtrl_Test : MonoBehaviour {
// Use this for initializatio
void Start () {


}
// Update is called once per frame
void Update () {
}
void OnGUI()
{
if (GUI.Button (new Rect (0, 0, 100, 30), "Scene 이동"))
{
// TestScene으로 이동
//SceneManager.LoadScene ("OneDayScene");
// TestSceen 붙이기
SceneManager.LoadSceneAsync("TestScene", LoadSceneMode.Additive);
}
}
}

1. 메뉴에서 File -Build Scene 선택. Scene을 넣어줌(마우스 드래그)
2. Script를 만들어서 위와 같이 작성
3. 빈 Object를 생성해 스크립트를 넣음
4. 실행하면 멀티뷰(주석은 TestScene으로 이동)가 됨.


반응형

Post

반응형
GameObject와 GameComponent 관계
게임 내 모든 Object는 모두 GameObject이다. 하지만 안에 들은 내용물로 각각 다른 GameObject가 된다.
내용물이 바로 Component이다.
GameObjec가 컨테이너(빈상자)라고 생각하면 된다.

Canvas란?
Canvas Component를 가진 GameObject. 모든 UI요소의 부모요소.
Canvas가 없을 땐 어떤 UI를 생성하든 같이 생성된다.

UI 렌더 순서
하이어라키 뷰에 나열된 순서대로(위에서 아래로) 랜더됨.
렌더 순서 함수
// obj가 현재 위치한 계층에서 가장 먼저 렌더링 되도록한다(가장 안쪽)
obj.transform.SetAsFitstSibling();
// obj가 현재 위치한 계층에서 가장 나중에 렌더링되도록 한다(가장 위에)
obj.transform.SetAsLastSibling();
// obj를 현재 위치한 계층에서 3번째 요소가 되는 위치에 놓는다(안쪽에서부터 3번째 렌더링)
obj.transform.SetSiblingIndex(3);

캔버스의 렌더링 모드와 속성
총 3가지 렌더링 속성
*Sceen Space - Overlay
캔버스가 씬 내부 어느곳에 있어도 화면 전체를 덮는 모습.
화면의 크기나 해상도가 변경되면 그에 맞춰서 캔버스의 크기도 자동 변환

*Sceen Space - Camera
카메라 Projection 속성에 따라 다르게 렌더
Perspective라면 원근감 있게 렌더(원근감의 정도는 Field of View속성에 따라 달라짐)

*World Space
캔버스의 소팅 레이어 순서에 따라 렌더됨.

Canvas Scaler 컴포넌트
Canvas에 추가된 컴포넌트.
Canvas안에 있는 UI 전체 요소 의 스케일과 픽셀 밀도를 제어
폰트크기. 이미지..
UI Scale Mode
*Constant Pixel Size
UI 요소의 위치나 크기가 화면상의 픽셀 단위에 의해 설정됨.

*Scale With Screen Size
지정된 참조 해상도에 따라 달라짐
=> 보통은 이걸로 기기해상도를 맞춘다.
너비나 높이를 기준으로 맞추기 때문에 화면이 잘리지 않는다.
참조 해상도는  x 960 y 630
ScreenMatchMode는 0(Width 기준) 으로 하였다.



*Constant Physical Size

화면 해상도와 참조 해상도의 가로세로 비율이 다를 때 캔버스를 스케일하는 방법 설정.


반응형

Post

반응형


1. Create-UI-Button 생성

2. Canvas와 Button과 EventSystem이 생긴다. 여기서 Button의 Button(Script)로 가서 클릭 시 호출될 함수를 연결해줘야 한다.

(위 사진 처럼 나는 MainCamera 안에 스크립트를 생성했고, MyButtonCilck이란 함수를 연결시켰다)

3.UIExample 스크립트 생성. MyButtonCilck 함수를 선언해서 디버그 메시지를 추가한다.

4. 스크립트가 있는 Main Camera를 연결하고, MyButtonClick함수를 연결시킨다.

5.클릭시 Console 창에 디버그 메시지가 뜬다.



나는 바보같이 OnGUI 함수를 찾고 있었다..

사실 지금도 OnGUI가 뭔지 모르겠다..ㅇ<-<

옛날에 있던 안좋은 함수라는 것 뿐?

아무튼 너무 돌아서 간듯하다 ㅠ


반응형

Post

반응형

조금씩 하는 중이다.

이제 겨우 GameManager 만드는 10장하는 중^^;;

왜이렇게 느리냐구 하면.. 놀거 다놀고 있어서 ㅋㅋㅋㅋ

(스트레스 받는거 싫어함)

그래서 즐기는 기분으로 유니티 하는 중이다 ㅎㅎ

잘 이해 안가는부분도 있지만 굉장히 재밌다:)

얼른 Node.js도 공부하고싶다ㅠ_ㅠ

반응형
▲ top