Post

반응형

C3867 비표준 구문입니다. &를 사용하여 멤버 포인터를 만드세요

함수 호출하는데 () 괄호를 안넣음.

괄호넣으니 해결

반응형

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

반응형

생활코딩 주소 : https://opentutorials.org/course/2136/11915


템플릿 엔진 Jade를 소개


정적 + 동적의 장점을 합쳐서 만든 템플릿 엔진

템플릿 엔진 중 Jade 공부


참고 코드 : http://expressjs.com/ko/guide/using-template-engines.html


1. jade  모듈 설치

npm install jade --save


2. 설치 후 코드에 jade 엔진을 사용하겠다는 소스코드를 추가

app.set('view engine', 'jade');


3. 템플릿이 있는 디렉터리를 알려준다.

그리고 views 라고 하는 디렉터리를 생성.(관습적으로 views라는 이름을 사용)

app.set('views', './views');


4. 템플릿에 대한 라우터 만들기

(템플릿엔진은 send가 아닌 웹페이지를 만들어내는 것이라 render()사용)

그리고 temp.jade라는 파일을 views 안에 만든다.

app.get('/template', function(req, res){

res.rennder('temp');

});


* node app.js가 번거롭다면 supervisor app.js 라고 친다.

 supervisor는 app.js 를 등록하면 app.js 가 수정될 때마다 알아서 재시작을 해준다.


5. temp 안에 head라고 적으면

소스코드 보기에서 <head></head> 라고 찍힌 것을 확인할 수 있다.

그런데 만약 

html

head

body


라고 하면 순서대로
<html></html><head></head><body></body> 라고 나온다.
이유는 안에 들어간다고 알려주지 않았기 때문이다.
알려주려면 tab으로 들여쓰기를 한다.

html

head

body


코드를 보기 좋게 하려면

app.locals.pretty = true;



-(마이너스는 화면에 출력되는 녀석이 아니라는 뜻

한줄 띄면 다음 문장의 태그 생성을 의미하므로

안에 내용을 넣고 싶다면 태그 다음에 한줄 띄지말고

적을 것

 

html

head

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding



만약 시간을 출력하고 싶다면?


html

head

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding

div= time


time이란 변수를 외부에서 줘야 한다.

외부에서 주는 것은 우리가 이 페이지를 호출하는 코드에서 인자를 추가해주면 된다.

app.get('/template', function(req, res){

res.render('temp', {time:Date()});

});


helloWorld.js

var express = require('express');

var app = express();

app.set('view engine', 'jade');

app.use(express.static('public'));

app.locals.pretty = true;

app.get('/template', function(req, res){

res.render('temp', {time:Date()});

});


app.get('/', function(req, res){

res.send('Hello World!');

});


app.get('/login', function(req, res){

res.send('Login Please');

});


app.get('/dynamic', function(req, res){

var lis = '';

for(var i = 0; i < 5; ++i)

{

lis = lis + '<li>coding</li>';

}

var time = Date();

var output = `

<!DOCTYPE html>

<html>

<head>

<meta acharset="utf-8">

<title></title>

</head>

<body>

Hello zzㅋㅋㅋdseer2312312fsdd

<ul>

${lis}

</ul>

${time}

</body>

</html>`;

//var output = ''; 

res.send(output);

});


app.listen(3000, function(){

console.log('Example app listening on port 3000!');

});


temp.jade


html

head

title 타이틀입니다

body

h1 hello Jade

ul

-for(var i = 0; i<5; ++i)

li coding

div= time


반응형

Post

반응형

Nodejs Express-웹페이지를 표현하는 방법

생활코딩 주소 : https://opentutorials.org/course/2136/11858


웹페이지에 데이터를 보여주는 방식을 공부하는 시간이었다.

정적 데이터로 표현해도 되지만

자바스크립트?? 를 이용해서 좀 더 편리하게 보여줄 수 있다는걸 깨달았다.


var express = require('express');

var app = express();

app.use(express.static('public'));


app.get('/', function(req, res){

res.send('Hello World!');

});


app.get('/login', function(req, res){

res.send('Login Please');

});

/*

app.get('/dynamic', function(req, res){

  var lis = '';

  for(var i=0; i<5; i++){

    lis = lis + '<li>coding</li>';

  }

  var time = Date();

  var output = `

  <!DOCTYPE html>

  <html>

    <head>

      <meta charset="utf-8">

      <title></title>

    </head>

    <body>

        Hello, Dynamic!

        <ul>

          ${lis}

        </ul>

        ${time}

    </body>

  </html>`;

  res.send(output);

});*/


app.get('/dynamic', function(req, res){

var lis = '';

for(var i = 0; i < 5; ++i)

{

lis = lis + '<li>coding</li>';

}

var time = Date();

var output = `

<!DOCTYPE html>

<html>

<head>

<meta acharset="utf-8">

<title></title>

</head>

<body>

Hello zzㅋㅋㅋdseer2312312fsdd

<ul>

${lis}

</ul>

${time}

</body>

</html>`;

//var output = ''; 

res.send(output);

});


app.listen(3000, function(){

console.log('Example app listening on port 3000!');

});

반응형

Post

반응형

생활코딩 Nodejs Express 설치 + 간단 웹어플 만들기


생활코딩 주소

https://opentutorials.org/course/2136/11885

https://opentutorials.org/course/2136/11886


홈페이지 ( http://expressjs.com/ko/starter/generator.html ) 를 참고하여 Nodejs Express를 설치한다.


express 설치

새로운 디렉터리 생성하고 폴더를 npm 폴더로 만들기 위해서 npm init을 해준다.

그러면 package.json 파일이 생성된다.

그후 npm install --save express 라고 하면 npm이 express 패키지를 다운받는다.

만약 성공적으로 깔렸다면 node_modules 폴더가 생성되어있다.

mkdir temp

cd temp

npm init

npm install --save express


(apckage.json이 이미 있다면 npm init을 해줄 필요는 없다)




Express, 간단한 웹앱 만들기

http://expressjs.com/ko/starter/hello-world.html

이 페이지의 HelloWorld 예제를 따라할 것이다.


***


var express = require('express');

var app = express();


app.get('/', function(req, res){

res.send('Hello World!');

});


app.get('/login', function(req, res){

res.send('Login Please');

});


app.listen(3000, function(){

console.log('Example app listening on port 3000!');

});

***


을 적어서 저장하고 node app.js 명령어로 실행 후

인터넷에 localhost:3000 이라고 치면 Hello World가 뜨는걸 알 수 있다.


사용자는 보통 url을 쳐서 get 방식으로 접속하는 것.

그래서 get 방식으로 ('/') 홈에 들어온 사용자에게 메세지를 줄 수 있다.





반응형

Post

반응형

생활코딩

카테고리 : Server - JavaScript(NodeJS) - 콜백(callback)함수


node sample.js  라고 치면 sample.js를 실행시킬 수 있다.

하지만 그냥 node라고 치면 자신이 직접 커맨드 창에 입력 할 수 있게 된다.


콘솔창

console.log(1+1)


결과값

2

undefined



콘솔창

a = [3, 1, 2];


결과값

[3, 1, 2];



콘솔창

console.log(a);


결과값

[3, 1, 2]



콘솔창

a.sort();


결과값

[1, 2, 3]

반응형
▲ top