์• ๋‹ˆ๋ฉ”์ดํ„ฐ์— ์ธํŠธํ˜• ํŒŒ๋ผ๋ฏธํ„ฐ hAxisRaw ํ•˜๊ณ  vAxisRaw ์ถ”๊ฐ€ํ•œ๋‹ค์Œ์— ํ”Œ๋ ˆ์ด์–ด ์Šคํฌ๋ฆฝํŠธ์—



h = Input.GetAxisRaw("Horizontal");

v = Input.GetAxisRaw("Vertical");


anim.SetInteger("hAxisRaw", (int)h);

anim.SetInteger("vAxisRaw", (int)v);


์š”๋ ‡๊ฒŒ ๋„ฃ๊ณ 


์ˆ˜์น˜๋ฐ›๋Š”๊ฑฐ์—๋”ฐ๋ผ 0๋ณด๋‹ค ์ ์„๋•Œ 0์ผ๋•Œ ์ด๋Ÿฐ์‹์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ดํ„ฐ ์œ„์•„๋ž˜์–‘์˜† ๋Œ€๊ธฐ๋ž‘ ๊ฑท๊ธฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ „ํ™˜ํ•ด๋†จ๋Š”๋ฐ


๊ฒŒ์ž„์—์„œ ์›€์ง์—ฌ๋ณด๋‹ˆ๊นŒย hAxisRawย vAxisRaw ์ด ๋‘ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ’์ด 0์—์„œ ์•ˆ๋ณ€ํ•œ๋‹ค ๋ญ์ง€ ๊ฐ•์ œ ํ˜•๋ณ€ํ™˜์ด ๋ฌธ์ œ์ธ๊ฐ€ย 


ํ”Œ๋ ˆ์ด์–ด ์ฝ”๋“œ ์ „๋ถ€ ๊ฐ€์ ธ์˜ค๋ฉด


public class PlayerMove : MonoBehaviour

{

ย  ย  Rigidbody2D rigid;

ย  ย  Animator anim;


ย  ย  public float Speed;

ย  ย  float h;

ย  ย  float v;


ย  ย  bool isHorizonMove;


ย  ย  void Awake()

ย  ย  {

ย  ย  ย  ย  rigid = GetComponent<Rigidbody2D>();

ย  ย  ย  ย  anim = GetComponent<Animator>();

ย  ย  }


ย  ย  // Update is called once per frame

ย  ย  void Update()

ย  ย  {

ย  ย  ย  ย  h = Input.GetAxisRaw("Horizontal");

ย  ย  ย  ย  v = Input.GetAxisRaw("Vertical");


ย  ย  ย  ย  bool hDown = Input.GetButtonDown("Horizontal");

ย  ย  ย  ย  bool vDown = Input.GetButtonDown("Vertical");

ย  ย  ย  ย  bool hUp = Input.GetButtonUp("Horizontal");

ย  ย  ย  ย  bool vUp = Input.GetButtonUp("Vertical");


ย  ย  ย  ย  if (hDown || vUp)

ย  ย  ย  ย  ย  ย  isHorizonMove = true;

ย  ย  ย  ย  else if (vDown || hUp)

ย  ย  ย  ย  ย  ย  isHorizonMove = false;


ย  ย  ย  ย  anim.SetInteger("hAxisRaw", (int)h);

ย  ย  ย  ย  anim.SetInteger("vAxisRaw", (int)v);

ย  ย  }


ย  ย  private void FixedUpdate()

ย  ย  {

ย  ย  ย  ย  Vector2 moveVec = isHorizonMove ? new Vector2(h, 0) : new Vector2(0, v);

ย  ย  ย  ย  rigid.velocity = moveVec * Speed;

ย  ย  }


}


์š”๊ฑฐ์ž„