유니티에서 간단하게 아래와 같은 C# 스크립트를 만들고 움직이길 원하는 캐릭터에 컴포넌트를 추가해 준 다음
Inspector 창에서 speed의 값을 넣은다음에 플레이 후 움직임을 확인한다.
애니메이션을 안넣었기 때문에 모션 그대로 움직이는 것을 확인할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float speed;
float hAxis;
float vAxis;
Vector3 moveVec;
void Start()
{
}
void Update()
{
hAxis = Input.GetAxisRaw("Horizontal");
vAxis = Input.GetAxisRaw("Vertical");
moveVec = new Vector3(hAxis, 0, vAxis).normalized;
transform.position += moveVec * speed * Time.deltaTime;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MovePlayer : MonoBehaviour
{
public Transform tr;
public float moveSpeed = 4.0f;
void Start()
{
tr = GetComponent<Transform>();
}
void Update()
{
// GetKey 계속 키가 눌려있다면 동작
// GetKeyDown 키가 최초로 눌린 순간만 동작
// GetKeyUp 키를 눌렀다 뗀 순간 한번만 동작
if (Input.GetKey(KeyCode.A))
{
// 로컬 기준
//tr.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.Self);
// position은 right밖에 없음, left가 없음
//tr.position = tr.position + tr.right * -moveSpeed * Time.deltaTime;
// 월드 기준
tr.Translate(Vector3.left * moveSpeed * Time.deltaTime, Space.World);
}
else if (Input.GetKey(KeyCode.D))
{
// 로컬 기준
//tr.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.Self);
// position은 right밖에 없음, left가 없음
//tr.position = tr.position + tr.right * moveSpeed * Time.deltaTime;
// 월드 기준
tr.Translate(Vector3.right * moveSpeed * Time.deltaTime, Space.World);
}
}
}
위와 같은 방식으로 코드를 작성한뒤
1. 원하는 캐릭터에 스크립트를 추가해준다.
2. 원하는 캐릭터를 인스펙터에 드래그해서 추가해준다.
3. 그다음 실행 시키면 캐릭터가 이동하는것을 확인할 수 있다.
로컬 기준은 캐릭터를 축으로 좌우로 이동하는것이고 ( 캐릭터 Rotate 값에 영향을 받음 )
- 캐릭터가 바라보는 방향을 기준으로 좌우로 이동
월드 기준은 전체 월드를 축으로 좌우로 이동하는 것이다. ( 캐릭터 Rotate 값에 영향을 받지 않음 )
- 캐릭터가 바라보는 방향과 상관없이 화면상 좌우로 이동
유니티 비주얼 스튜디오 2022 설치 및 연동 (0) | 2023.07.20 |
---|---|
유니티 플레이어 3D 캐릭터 방향전환(rotate,rotation) (0) | 2023.07.12 |
17. 유니티 맵(바닥) 시간마다 줄어드는 효과 (0) | 2023.06.23 |
16. 유니티 모바일 이동(터치 컨트롤) (1) | 2023.06.14 |
15. 유니티 마우스 클릭 이벤트, 마우스 입력 사용하기 (0) | 2023.06.11 |