유니티

유니티 캐릭터 조작 스크립트2

작성자 정보

  • 마스터 작성
  • 작성일

컨텐츠 정보

본문

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로 이동시 기존 움직임 수치가 넘어간다.

따라서 정규화를 해야 합니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

최근글


새댓글


알림 0