유니티 C# 1일차(Object 키보드로 이동)
유니티 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);
}
}
자 여기까지
저장을 하고
다시 돌아와서 재생버튼을
눌러봅니다
그리고 키보드
위, 아래, 좌, 우
를 눌러보면
누르는 방향으로 움직이는 것을
확일 할 수 있습니다.
'Unity3D > C#' 카테고리의 다른 글
유니티 C# 4일차 마우스 기본(OnMouseEnter, OnMouseUp ~) (1) | 2016.05.17 |
---|---|
유니티 C# 3일차(onTriggerEnter, Tag, Destroy) (0) | 2016.05.08 |
유니티 C# 2일차(카메라 움직이기) (0) | 2016.05.05 |
유니티3D 언어선택.. 결국 C# (0) | 2016.04.23 |