유니티 C# 2일차(카메라 움직이기)

Posted by ITPangPang
2016. 5. 5. 01:24 Unity3D/C#


유니티 C# 2일차(카메라 움직이기)



이번글에서는 카메라를 한번 움직여보려고 합니다.


저번 글에서 Cube에 넣었던 c# 스크립트를 메인카메라에 넣으면 됩니다


먼저 Hierarchy에서 메인카메라를 선택한후에 F를 눌러서 셋팅을 하고


C# 스크립트를 하나 만든후에 지난번에 만들었던 그대로 적은후에 메인카메라에 스크립트를 추가해보겠습니다




Main Camera 선택후에

F키를 눌러봅니다


그리고 대충 마우스 휠로

잘보이게 해놓습니다



다음 C# 스크립트 

하나 만든후에 

지난글에서

만들었던 코드 

그대로 적어봅니다.


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);

}

}



그 다음 메인카메라에

스크립트를 드래그 앤 드롭

해서 붙여봅니다



마지막으로 

실행시켜보기 전에

움직이는지 확인해야

하니까 


메인 카메라 앞에 

Sphere를

하나 추가합니다



이제 실행을 시켜서

잘 움직이는지 

한번 확인해봅니다





잘 움직이네요

그런데 정작 중요한건

X, Y좌표로만 

움직여서

앞으로 가는 

느낌이 없네요

Z축으로 움직이면 

더 좋을거 같은데


Z축을 움직이기 위해서는

한줄만 수정해주면 됩니다.

Horizontal과는 

관련이 없으니

Vertical 부분에

up부분을 forward로 변경해주면 됩니다


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.forward * speed * Time.smoothDeltaTime * keyVertical , Space.World);

}

}


자 다음은 

키보드 누르기 너무 

귀찮으니까

자동으로 한번

이동해보겠습니다.


뭐 다를건 별로 없습니다.


this.transform.Translate(new Vector3(0.0f, 0.0f, speed * Time.deltaTime));


이걸 추가 시켜줍니다

그냥 이 오브젝트가 Z축으로

자동으로 움직이는겁니다


x축 -> 0만큼

y축 -> 0만큼

z축 -> 속도*Time.deltaTime

입니다


Update가 프레임마다 호출되는걸로

알고 있으니 컴 사양에 따라

반응이 다를 수도 있습니다


전체소스는 다시 한번 보면

아래와 같이 수정하였습니다.


using UnityEngine;

using System.Collections;


public class MoveEx : MonoBehaviour {


int speed = 5;

// 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");


   this.transform.Translate(new Vector3(0.0f, 0.0f, speed * Time.deltaTime));

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

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

}

}


위 코드를 실행하면

Z축으로 자동으로 이동합니다.


근데 아직 키보드 코드를 

제거 안했으므로 자동으로

이동하면서도 키보드가 통합니다


이것을 확인해보기 위해


카메라 앞에 장애물을 

몇개 놓아봅니다.



이제 실행시키면서

방향키를 움직여봅니다




완성~


잘 움직입니다