private void FixedUpdate() { switch (state) { case State.Normal: rigidbody3D.velocity = moveDir * MOVE_SPEED; if (isDashButtonDown) { float dashAmount = 5f; Vector3 dashPosition = transform.position + lastMoveDir * dashAmount; RaycastHit2D raycastHit2d = Physics2D.Raycast(transform.position, lastMoveDir, dashAmount, dashLayerMask); if (raycastHit2d.collider != null) { dashPosition = raycastHit2d.point; } // Spawn visual effect DashEffect.CreateDashEffect(transform.position, lastMoveDir, Vector3.Distance(transform.position, dashPosition)); rigidbody3D.MovePosition(dashPosition); isDashButtonDown = false; } break; case State.Rolling: rigidbody3D.velocity = rollDir * rollSpeed; break; case State.Busy: break; } }
private void FixedUpdate() { rigidbody2D.velocity = moveDir * MOVE_SPEED; if (isDashButtonDown) { float dashAmount = 50f; Vector3 dashPosition = transform.position + moveDir * dashAmount; RaycastHit2D raycastHit2d = Physics2D.Raycast(transform.position, moveDir, dashAmount, dashLayerMask); if (raycastHit2d.collider != null) { dashPosition = raycastHit2d.point; } // Spawn visual effect DashEffect.CreateDashEffect(transform.position, moveDir, Vector3.Distance(transform.position, dashPosition)); rigidbody2D.MovePosition(dashPosition); isDashButtonDown = false; } }