유니티 C# 1일차(Object 키보드로 이동)

Posted by ITPangPang
2016. 5. 1. 16:57 Unity3D/C#


유니티 C# 1일차

(Object 키보드로 이동)



Unity를 매일매일 공부할 수는 없지만


공부하고 개발하는 날 만큼은 


기본 유니티 사용법+ C#스크립트 이렇게 동시에 알아보려고 합니다.


기본 사용법 1일차에서 Object 생성을 해봤으니 


C#스크립트에서 가장 기초적이면서도 바로바로 눈에 띌 수 있는 키보드 제어를 알아보겠습니다.




자, 먼저 Cube 생성후

F키를 눌러서 확대시켜봅니다



그 다음 바로 

C# 스크립트를 

생성하기 위해서


Project에서

Create를 누른후

생성을 해도 되고



Assets에서

마우스 오른쪽 클릭을

누른후 

Create에서 

C# Script를 

선택해도 됩니다.





선택을 하면 바로 C# Script가 생성되는데

원하는 이름으로 바로 변경후에

엔터를 눌러주시면 됩니다.




생성을 하게 되면 아래와 같이

XXX.cs 파일이 만들어지게

됩니다.


이것을 Cube와 연결하기 위해서

마우스 왼쪽을 누른후 드래그로

화면의 Cube에 놓아도 되고


Hierarchy에 놓아도 되고


Inspector의 Add Component

버튼에 놓아도 되고


편하신 대로 골라서

으시면 연결이 됩니다.


연결을 완료하게 되면



Cube의 Inspector에

위 사진처럼 연결된 것을

확인할 수 있습니다.


이제 스크립트를 

수정하기 위해서


XXX.cs파일을

더블클릭해줍니다


더블클릭을 하게되면

MonoDevelop라는

Edit가 하나 켜지면서


위와 같은 화면을

볼 수 있습니다.


빨간색 박스는

개발자가 

선언해준 스크립트

이름과 일치합니다.


유니티에서 

아주 친절하게

어느정도 설명을 해놨습니다.


void Start()와 void Update()

부분이 있는데


void Start()는 초기설정을

위한 메서드라고 

나와있네요


이번에 짜볼 코드는

키보드 방향키를 눌렀을때

Object를 누른방향대로

이동시키는 코드를

만들어 볼 것이므로

void Start()와는 거리가 멀고

void update()부분에 작성해보도록

하겠습니다


using UnityEngine;

using System.Collections;


public class MoveEx : MonoBehaviour {


// Use this for initialization

void Start () {


}

// Update is called once per frame

void Update () {

moveObject ();

}


void moveObject()

{


}

}


자 처음에 요렇게 

만들어 보고

void moveObject()

안에다가

코드를 적어보겠습니다


자, 키보드를 보면

위, 아래, 오른쪽, 왼쪽

총 4개의 키가 있습니다.


유니티에서 

위, 아래를 감지하기 위해서는

Input.GetAxis("Vertical")

을 사용해야합니다

뭐 어려운 코드는 아닙니다


써있는 대로

get 얻어오는 겁니다

Axis 좌표의 축을

Vertical 수직, 세로의


자 그럼 왼쪽, 오른쪽도 

어려울거 없이 

Verical을 Horizontal로 

바꿔주면 

됩니다.

Input.GetAxis("Horizontal");


using UnityEngine;

using System.Collections;


public class MoveEx : MonoBehaviour {


// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

moveObject ();

}


void moveObject()

{

float keyHorizontal = Input.GetAxis("Horizontal");

float keyVertical = Input.GetAxis("Vertical");

}

}


자 다음은

어쨋든 Object를

이동시켜야 되니까

이동을 위해서

transform.Translate

를 사용하여야 합니다


사용하기 위해서

Unity 스크립터 레퍼런스를

보면


Translate(Vector3 translation, Space relativeTo = Space.Self);

라고 적혀있습니다



translation에는


위에 적어준

keyHorizontal*


초당 프레임 계산값과 평균치를 반환해주는

Time.smoothDeltaTime*


그리고 사용자가 원하는 Speed를 설정해 줄 수 있습니다

speed


그리고 맨 앞에 수직인지, 수평인지 알 수 있도록

Vector3.right

Vector3.up

을 선택하여 적어줍니다



다음으로 Space에는


절대 좌표를 사용하기 위해

Space.World

라고 적어줍니다 


이렇게 적어서 완성시킨 코드입니다.


using UnityEngine;

using System.Collections;


public class MoveEx : MonoBehaviour {


int speed = 10;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

moveObject ();

}


void moveObject()

{

float keyHorizontal = Input.GetAxis("Horizontal");

float keyVertical = Input.GetAxis("Vertical");


transform.Translate(Vector3.right * speed * Time.smoothDeltaTime * keyHorizontal , Space.World);

transform.Translate(Vector3.up * speed * Time.smoothDeltaTime * keyVertical , Space.World);

}

}


자 여기까지 

저장을 하고 

다시 돌아와서 재생버튼을 

눌러봅니다



그리고 키보드

위, 아래, 좌, 우

를 눌러보면


누르는 방향으로 움직이는 것을

확일 할 수 있습니다.