안녕하세요.
스틱 코드를 사용하여 키보드 A, W, S, D를 입력하면 유닛(오브젝트)이 이동하는 기능을 만들어보겠습니다.
실행 환경
개발 툴: Unity 2020.3.9f1
IDE : Rider
예제에 사용할 오브젝트들을 만들어보겠습니다.
유니티 프로젝트 실행 후
Hierarchy 창에서 우클릭하면 아래와 같은 사진처럼 화면이 나오는데
여기서 Terrain, Cube 오브젝트를 선택해서 생성해줍니다.
다음으로 큐브의 위치를 Terrain 정중앙으로 배치하기 위해 큐브 오브젝트를 선택 후
Transform -> Position 값을 x: 50, y: 1, z: 50으로 설정합니다.
다음으로 C# 코드를 실행하기 위한 설정 작업을 진행하겠습니다.
1. C# 파일 생성
Assets 창 안에서 마우스 우클릭하면 아래와 같은 사진처럼 메뉴 창이 나오는데
Create -> C# Script를 선택해 줍니다. 파일 이름은 MoveScript로 만들어 보겠습니다.
2. 오브젝트에 C# 파일 추가
게임 오브젝트 선택 후 만들었던 C#파일을 드래그 앤 드롭으로 Inspector 창 안으로 넣어주면,
아래 사진과 같이 내용이 추가되는 것을 확인할 수 있습니다.
다음 예제에 사용할 코드를 작성해보겠습니다.
스틱 코드를 활용한다면, 클래스에서 'mo' 까지만 작성했을 때 '유닛 이동 기능 생성' 이벤트가 나타납니다.
'유닛 이동 기능 생성' 이벤트를 누를 경우 코드가 자동으로 완성됩니다.
함수를 사용하기 위해 FixedUpdate() 함수 안에 아래 사진처럼 함수 이름을 추가해줍니다.
<최종 코드>
using UnityEngine;
public class MoveScript : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void FixedUpdate()
{
Move();
}
void Move()
{
float _speed = 10f;
// Quaternion.LookRotation: 벡터 매개변수의 방향으로 쳐다보게끔 자신의 방향을 회전시켜주는 함수
// Quaternion.Slerp: 좀 더 부드럽게 회전시켜주는 함수
if (Input.GetKey(KeyCode.W)) {
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.back), 0.2f);
transform.position += Vector3.back * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.S)) {
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f);
transform.position += Vector3.forward * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.A)) {
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.right), 0.2f);
transform.position += Vector3.right * Time.deltaTime * _speed;
}
if (Input.GetKey(KeyCode.D)) {
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.left), 0.2f);
transform.position += Vector3.left * Time.deltaTime * _speed;
}
}
}
프로젝트를 실행하면 아래 사진같이 키보드 A, W, S, D를 입력하면 오브젝트가 이동하는 것을 확인할 수 있습니다.
'C#' 카테고리의 다른 글
[C#][Unity] 캐릭터 점프 기능 만들기 (0) | 2021.09.14 |
---|---|
[C#][Unity]인터넷에서 시간 가져오기! (0) | 2021.09.03 |
[C#][Unity] On Click()에 대해서. (0) | 2021.08.23 |
[C#][Unity] 로딩 화면 만들기 (0) | 2021.08.15 |
[C#][Unity]타이머 만들기! (0) | 2021.08.12 |