[Unity 3D] 개발일지 #1 - 플레이어 이동
- ⭐ Game Programming/Unity
- 2021. 8. 25.
유니티 3D 개발일지 시작
유니티는 2D로만 몇번 다뤄본적이 있으나 3D쪽은 해본적이 없다. 일단 뭐든 만들어보면서 기능을 익혀 나가자. 장르는 일단 3D 쿼터뷰 액션 게임으로 만들어 볼 생각이다.
바닥 깔기
플레이어가 뛰어다닐 공간이 필요하니 바닥부터 깔자 큐브의 스케일값을 늘려서 바닥을 만들고 그리드 텍스쳐를 대충 그려서 Material 생성 적용했다.
플레이어 생성
플레이어 메시는 따로 없으니까 일단 캡슐과 큐브오브젝트로 만들었다. Player Object 에 Collider와 Rigidbody를 추가하고, Player 스크립트도 추가하였다.
플레이어 이동과 회전
스크립트 안에서 간단하게 방향키로 이동과 회전을 구현하였다. transform.position
포지션 값을 변경하는 방법도 있겠지만 충돌 처리를 위해서 Rigidbody에 힘을 가하는 방식으로 구현하였다. 이동하는 방향으로 회전하기 위해 `LookAt' 함수로 회전시켰다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public float moveSpeed;
private Rigidbody charRigidbody;
void Start()
{
charRigidbody = GetComponent<Rigidbody>();
}
void Update()
{
float hAxis = Input.GetAxisRaw("Horizontal");
float vAxis = Input.GetAxisRaw("Vertical");
Vector3 inputDir = new Vector3(hAxis, 0, vAxis).normalized;
charRigidbody.velocity = inputDir * moveSpeed;
transform.LookAt(transform.position + inputDir);
}
}
카메라 이동
카메라가 캐릭터를 따라다니게 해보자 Camera용 스크립트를 추가하였고, MainCamera Object에 Camera Script를 추가하였다. 그리고 Camera 스크립트에 따라다닐 targetTransform 변수에 Player Object를 지정하였다.
public class Camera : MonoBehaviour
{
public Transform targetTransform;
public Vector3 CameraOffset;
void Update()
{
transform.position = targetTransform.position + CameraOffset;
}
}
캐릭터를 카메라가 잘 따라다니는것을 확인 할 수 있다.
반응형