1. 이동
void Move() { Vector3 moveVelocity = Vector3.zero; // left if(Input.GetAxisRaw("Horizontal") < 0) { moveVelocity = Vector3.left; sr.flipX = true; } // right else if (Input.GetAxisRaw("Horizontal") > 0) { moveVelocity = Vector3.right; sr.flipX = false; } transform.position += moveVelocity * movePower * Time.deltaTime; }
좌, 우 전환은 flipX으로 구현
2. 점프
void Jump() { if (!isJumping) return; rdb2.velocity = Vector3.zero; Vector3 jumpVelocity = new Vector3(0, jumpPower, 0); rdb2.AddForce(jumpVelocity, ForceMode2D.Impulse); isJumping = false; }
AddForce, ForceMode2D.Impulse를 통해 보다 부드러운 점프를 구현
3. 이동과 점프의 애니메이션 파라미터
void Update() { // 떨어지고 있는 경우 if(rdb2.velocity.y < 0) { ani.SetBool("IsRising", false); ani.SetBool("IsFalling", true); } // 점프하고 있는 경우 else if (rdb2.velocity.y > 0) { ani.SetBool("IsRising", true); ani.SetBool("IsFalling", false); } // 가만히 있는 경우 else { ani.SetBool("IsRising", false); ani.SetBool("IsFalling", false); } if (Input.GetAxisRaw("Horizontal") == 0) { ani.SetBool("IsMoving", false); } else if (Input.GetAxisRaw("Horizontal") < 0) { ani.SetBool("IsMoving", true); ani.SetInteger("Direction", -1); } else if (Input.GetAxisRaw("Horizontal") > 0) { ani.SetBool("IsMoving", true); ani.SetInteger("Direction", 1); } if (Input.GetButtonDown("Jump")) { isJumping = true; } }
'Unity 공부시작 > Unity2D 게임 및 기능구현' 카테고리의 다른 글
유니티2D :: 랜덤 스킬 배정받기 < Action 이용 > (0) | 2019.01.22 |
---|---|
유니티2D :: 오브젝트 원래 있던 위치로 돌아가기 (0) | 2019.01.19 |
유니티2D :: 애니메이션의 전환이 느린 경우 (0) | 2019.01.18 |
유니티2D :: 대화 이벤트 구현 연습 (2) | 2019.01.18 |
Unity2D 기능 구현 :: 날아오는 화살 막아내기 (0) | 2019.01.07 |