유니티 캐릭터 조작 스크립트2
작성자 정보
- 마스터 작성
- 작성일
컨텐츠 정보
- 296 조회
- 목록
본문
1.스크립트
public Vector2 inputVec;
Rigidbody2D rigid
public float speed;
void Awake()
{
rigid = GetComponent<Rigidbody2D>();
}
void Update()
{
inputVec.x = Input.GetAxisRaw("Horizontal");
inputVec.y = Input.GetAxisRaw("Vertical");
}
void FixedUpdate()
{
Vector2 nextVec = inputVec.normalized * speed * Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
}
2.코드 분석
vector2와 rigidbody2D를 사용하여 움직임을 구현합니다.
void Awake()
{
rigid = GetComponent<Rigidbody2D>();
}
Awake를 사용해서 Rigidbody2D를 선언합니다.
void Update()
{
inputVec.x = Input.GetAxisRaw("Horizontal");
inputVec.y = Input.GetAxisRaw("Vertical");
}
inputVec는 vector2로 X,Y값을 가진다.
inputVec.x 는 Input.GetAxisRaw("Horizontal");으로 수평의 움직임을 감지한다. 방향키 왼쪽, 오른쪽, A,D 키
inputVec.y 는 Input.GetAxisRaw("Vertical");로 수직의 움직임을 감지한다. 방향키 위쪽, 아래쪽, W,S 키
void FixedUpdate()
{
Vector2 nextVec = inputVec.normalized * speed * Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
}
nextVec는 움직일 좌표로 정규화 처리를 합니다.
rigid.MovePosition으로 현재 좌표에 이동할 좌표 값을 받아서 더해 줍니다.
normalized를 하는 이유?
좌우로 1, 상하로 1 대각선은 루트2이기 때문에 대각선으로 1,1로 이동시 기존 움직임 수치가 넘어간다.
따라서 정규화를 해야 합니다.
관련자료
-
이전
-
다음