728x90
나를 위해 기록하는 유니티 기초
아래는 어제 기록한 키보드로 캐릭터 움직임 구현입니다.
https://chadireoroonu.tistory.com/109
Unity 키보드로 캐릭터 움직임 구현
나를 위해 기록하는 유니티 기초 1. 유니티 프로젝트 생성 후 땅이 될 3D 오브젝트 Plane 생성 2. 땅 위에서 움직여 줄 오브젝트로 3D 큐브 생성 후 땅 위쪽으로 배치 3. 큐브에 연결할 C# 스크립트 생
chadireoroonu.tistory.com
키보드의 방향키를 누르면 해당 방향으로 캐릭터가 움직이도록 해놓은 상태에서,
왼쪽 쉬프트 키를 누르고 방향키를 누를 때 빠른 이동을 구현해보겠습니다.
어제 작성했던 이동 코드에 대시(빠른 이동) 기능을 덧붙여 보겠습니다.
아래 코드는 어제 작성한 움직임 코드입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
float speed = 10.0f;
void Update()
{
// 키보드 입력
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// 이동거리 보정
h = h * speed * Time.deltaTime;
v = v * speed * Time.deltaTime;
// 실제 이동
transform.Translate(Vector3.right * h);
transform.Translate(Vector3.forward * v);
}
}
이 중, 달라져야 하는 부분은 이동거리 보정 부분의 코드입니다.
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
public class move : MonoBehaviour
{
float speed = 10.0f;
void Update()
{
// 키보드 입력
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// 쉬프트 키 대시
if (Input.GetKey(KeyCode.LeftShift)) {
// 이동거리 보정
h = h * speed * Time.deltaTime * 2;
v = v * speed * Time.deltaTime * 2;
}
// 일반 이동
else {
// 이동거리 보정
h = h * speed * Time.deltaTime;
v = v * speed * Time.deltaTime;
};
// 실제 이동
transform.Translate(Vector3.right * h);
transform.Translate(Vector3.forward * v);
}
}
왼쪽 쉬프트 키가 눌려있는지 여부에 따라 이동거리를 다르게 보정해주었습니다.
쉬프트 키를 누르고 있는 동안은 계속 대시가 가능하도록 설정해보았습니다.
2309063 코드 리팩토링
뭐하러 길게 썼나 싶어서 일부 수정
using System.Collections;
using System.Collections.Generic;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
public class move : MonoBehaviour
{
float speed = 10.0f;
void Update()
{
// 키보드 입력
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// 이동거리 보정
h = h * speed * Time.deltaTime * 2;
v = v * speed * Time.deltaTime * 2;
// 쉬프트 키 대시
if (Input.GetKey(KeyCode.LeftShift)) {
h *= 2;
v *= 2;
}
// 실제 이동
transform.Translate(Vector3.right * h);
transform.Translate(Vector3.forward * v);
}
}
h, v를 구하고, 만약 쉬프트 키가 눌린 상태라면 h, v에 2곱해주는 방식으로 일부 수정했습니다.
결과물은 동일하게 나옵니다
'Unity' 카테고리의 다른 글
Unity 다른 사람이 만든 에셋 불러오기 (0) | 2023.09.10 |
---|---|
Unity 오브젝트 색상, 재질 변경하기 (0) | 2023.09.09 |
Unity 키보드로 캐릭터 움직임 구현 (0) | 2023.09.05 |
Unity Prefab 프리팹 알아보기 (0) | 2023.08.28 |
Unity 프로젝트로 에셋 가져오기 (0) | 2023.08.27 |