유니티 스크립트 작성
Start(), Update(), FixedUpdate() 등을 활용할 수 있습니다.
Monobehaviour를 상속받는 클래스들은 유니티 이벤트 함수를 활용할 수 있습니다.
게임 오브젝트의 생명 주기 동안 호출되는 특정한 메서드들의 순서와 타이밍
게임 오브젝트의 생성, 초기화, 업데이트, 파괴 등과 관련된 작업을 수행
Input.GetAxis는 유니티의 입력 시스템에서 사용되는 메서드입니다.GetAxis 메서드는 -1부터 1 사이의 값을 반환하는데, 입력 장치의 움직임에 따라 해당 값이 변경됩니다.GetAxis 메서드는 주로 플레이어의 움직임, 회전, 점프 등을 처리하는 데 사용됩니다.Input.GetAxis("Horizontal")을 사용하여 좌우 방향의 값을 얻을 수 있습니다.deltaTime은 게임의 프레임 속도에 상관없이 일정한 시간 간격으로 동작하는 게임을 만들 때 유용하게 사용됩니다.transform.Translate(Vector3.forward * speed * Time.deltaTime)과 같이 사용하면 프레임 속도에 관계없이 speed만큼의 일정한 이동 속도를 보장할 수 있습니다.Time.deltaTime은 초 단위의 값을 반환하며, 1초에 1에 가까운 값을 가집니다.deltaTime을 이용하여 이동, 회전, 애니메이션 등의 연산에 일정한 시간 간격을 적용할 수 있습니다.
publicprivateSerializeFieldprivate로 선언된 변수를 인스펙터에서 직접 접근private 변수는 인스펙터에 표시되지 않지만, SerializeField를 사용하면 해당 변수가 인스펙터에서 수정 가능한 필드로 표시public class ExampleClass : MonoBehaviour
{
public int publicVariable;
private int privateVariable;
[SerializeField]
private int serializedFieldVariable;
private void Start()
{
publicVariable = 10; // 외부에서 접근 가능
privateVariable = 20; // 클래스 내부에서만 접근 가능
serializedFieldVariable = 30; // 인스펙터에서 접근 가능
}
}
이동 기본 코드 작성
using UnityEngine;
public class InputManagerMovement : MonoBehaviour
{
Rigidbody2D rigidbody;
// private이지만 인스펙터 표출은 하고싶을때
[SerializeField] private float speed;
// Start is called before the first frame update
void Start()
{
// Rigidbody2D를 캐싱합니다.
rigidbody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
// Input Manager에서 Vertical축과 Horizontal축의 입력을 받아옵니다.
float vertical = Input.GetAxis("Vertical");
float horizontal = Input.GetAxis("Horizontal");
// 벡터의 normalized를 하면 벡터의 길이를 1로 만듭니다.
// 예를 들어, vertical, horizontal 모두 1인 경우, direction의 크기는 1보다 크게 될 수 있는데, 이를 1로 맞춰줍니다.
Vector2 direction = new Vector2(horizontal, vertical);
direction = direction.normalized;
// rigidbody.velocity는 해당 물체가 1초당 움직이는 거리를 말합니다.
rigidbody.velocity = direction * speed;
}
}
이번에는 이렇게 입력과 캐릭터의 이동에 대해서 알아보았다.