์‚ญ์ œ์•ˆํ•จ

๊ณจ๋“œ๋ฉ”ํƒˆ 2D ํ”Œ๋žซํฌ๋จธ ๊ฐ•์ขŒ ๋ณด๋ฉด์„œ ๋”ฐ๋ผํ•˜๊ณ  ์žˆ๋Š”๋ฐ

๋ ˆ์ด ์บ์ŠคํŠธ ๋ถ€๋ถ„ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•˜๊ณ  ํ”Œ๋ ˆ์ด ํ•ด๋ดค๋Š”๋ฐ

๊ฐ‘์ž๊ธฐ ํ”Œ๋ ˆ์ด์–ด ์ด๋™์†๋„๊ฐ€ ์™„์ „ ๋А๋ ค์กŒ์Œ

๊ธฐ์กด์ด 10์ด์—ˆ์œผ๋ฉด 3 ์ •๋„๋กœ ์ค„์–ด๋“œ๋Š” ๊ฒƒ ๊ฐ™์Œ

๊ทธ๋ž˜์„œ ๋ ˆ์ด์บ์ŠคํŠธ์— ์ฃผ์„ ๋‹ฌ์•„๋ณด๋‹ˆ๊นŒ ์›๋ž˜๋Œ€๋กœ ๋Œ์•„์™€์„œ ์–ด๋–ป๊ฒŒ ๊ณ ์น ์ง€ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋А๋ ค์ง

๊ทธ๋ž˜์„œ ์ด๋™ ๊ด€๋ จ ๋ถ€๋ถ„ ๋นผ๊ณ  ์ฃผ์„ ํ•ด๋ดค๋Š”๋ฐ ๊ทธ๋Œ€๋กœ์˜€์Œ


public class PlayerMove : MonoBehaviour

{

ย  ย  public float maxSpeed;

ย  ย  Rigidbody2D rigid;

ย  ย  SpriteRenderer spriteRenderer;

ย  ย  Animator anim;

ย  ย  public float JumpPower;


ย  ย  void Awake()

ย  ย  {

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

ย  ย  ย  ย  spriteRenderer = GetComponent<SpriteRenderer>();

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

ย  ย  }




ย  ย  void Update()

ย  ย  {

ย  ย  ย  ย  //์ ํ”„

ย  ย  ย  ย  if (Input.GetButtonDown("Jump"))

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  rigid.AddForce(Vector2.up * JumpPower, ForceMode2D.Impulse);

ย  ย  ย  ย  ย  ย  anim.SetBool("isJumping", true);

ย  ย  ย  ย  }


ย  ย  ย  ย ย 


ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  //๊ฐ์†

ย  ย  ย  ย  ย  ย  rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.2f, rigid.velocity.y);

ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  }

ย  ย  ย  ย ย 

ย  ย  ย  ย  //๋ฐฉํ–ฅ ์ „ํ™˜

ย  ย  ย  ย  if (Input.GetButton("Horizontal"))

ย  ย  ย  ย  spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;


ย  ย  ย  ย  //์• ๋‹ˆ๋ฉ”์ด์…˜

ย  ย  ย  ย  if (Mathf.Abs(rigid.velocity.x) < 0.14)

ย  ย  ย  ย  ย  ย  anim.SetBool("isWalking", false);

ย  ย  ย  ย  else

ย  ย  ย  ย  ย  ย  anim.SetBool("isWalking", true);

ย  ย  ย  ย ย 

ย  ย  }


ย  ย  void FixedUpdate()

ย  ย  {

ย  ย  ย  ย  //์›€์ง์ž„

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

ย  ย  ย  ย  rigid.AddForce(Vector2.right * h, ForceMode2D.Impulse);


ย  ย  ย  ย  //์ตœ๋Œ€ ์†๋„

ย  ย  ย  ย  if (rigid.velocity.x > maxSpeed) //์˜ค๋ฅธ์ชฝ ์ตœ๋Œ€ ์†๋„

ย  ย  ย  ย  ย  ย  rigid.velocity = new Vector2(maxSpeed, rigid.velocity.y);

ย  ย  ย  ย  else if (rigid.velocity.x < maxSpeed*(-1)) //์™ผ์ชฝ ์ตœ๋Œ€ ์†๋„

ย  ย  ย  ย  ย  ย  rigid.velocity = new Vector2(maxSpeed*(-1), rigid.velocity.y);

ย  ย  ย  ย ย 

ย  ย  ย  ย  //๋žœ๋”ฉ ํ”Œ๋žซํผ

ย  ย  ย  ย  Debug.DrawRay(rigid.position, Vector3.down, new Color(0, 1, 0));

ย  ย  ย  ย ย 

ย  ย  ย  ย  RaycastHit2D rayHit = Physics2D.Raycast(rigid.position, Vector3.down, 1);


ย  ย  ย  ย  if(rayHit.collider != null)

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย ย 

ย  ย  ย  ย  }

ย  ย  }

}


ํ—ฌํ”„...