protected override void Awake() { base.Awake(); m_animator = GetComponent <Animator>(); m_rigidbody2D = GetComponent <Rigidbody2D>(); m_lookDirection = E_LookDirection2D.Right; InitCheckGround(); }
// 2D 이동 private void Move() { // 현재 시점변환 중이라면 캐릭터 정지 if (m_playerManager.Skill_CV.IsChanging) { m_rigidbody2D.velocity = Vector2.zero; return; } // 키보드 입력 float move = Input.GetAxis("Horizontal") * m_playerManager.Stat.ForwardMoveSpeed; // 애니메이션 설정변수 if (move == 0) { m_playerManager.IsRunning = false; } else { m_playerManager.IsRunning = true; } // 중력을 사용중이지 않을 때 if (!m_playerManager.UseGravity) { // 이동키를 누를경우 중력 사용 if (move != 0) { m_playerManager.UseGravity = true; } } // 바라보는 방향 변경해주기 if (m_lookDirection != E_LookDirection2D.Right && move > 0) { m_lookDirection = E_LookDirection2D.Right; transform.localScale = new Vector3(1, 1, 1); } else if (m_lookDirection != E_LookDirection2D.Left && move < 0) { m_lookDirection = E_LookDirection2D.Left; transform.localScale = new Vector3(-1, 1, 1); } // 이동벡터 구하기 Vector3 movement = Vector3.right * move; //// 땅이라면 땅위치에서 살짝 띄어줌 if (m_playerManager.IsGrounded) { // 점프중일경우 점프중이 아니라고 알림 if (m_playerManager.IsJumping) { m_playerManager.IsJumping = false; } m_rayOrigin = transform.position; m_rayOrigin.y += m_rayOriginY; m_hit = Physics2D.Raycast(m_rayOrigin, m_rayDirection, m_rayDistance, m_ignoreLayerMask); if (m_hit.collider != null) { m_onGroundPos = transform.position; m_onGroundPos.y = m_hit.point.y + m_onGroundUpPos.y; transform.position = m_onGroundPos; } } // 땅이 아니라면 중력 적용 else { float nextVelocity = m_rigidbody2D.velocity.y + m_playerManager.Stat.Gravity * Time.deltaTime; movement.y = nextVelocity; } // 이동 m_rigidbody2D.velocity = movement; }