유니티 C# 2일차(카메라 움직이기)
유니티 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축으로 자동으로 이동합니다.
근데 아직 키보드 코드를
제거 안했으므로 자동으로
이동하면서도 키보드가 통합니다
이것을 확인해보기 위해
카메라 앞에 장애물을
몇개 놓아봅니다.
이제 실행시키면서
방향키를 움직여봅니다
완성~
잘 움직입니다
'Unity3D > C#' 카테고리의 다른 글
유니티 C# 4일차 마우스 기본(OnMouseEnter, OnMouseUp ~) (1) | 2016.05.17 |
---|---|
유니티 C# 3일차(onTriggerEnter, Tag, Destroy) (0) | 2016.05.08 |
유니티 C# 1일차(Object 키보드로 이동) (1) | 2016.05.01 |
유니티3D 언어선택.. 결국 C# (0) | 2016.04.23 |