void Update() { if (model != null && currentInsruction != null && currentInsruction.trackingState == TrackingState.Tracking) { Quaternion targetRotation = currentInsruction.transform.rotation * Quaternion.Euler(rotationOffset); Vector3 targetPosition = currentInsruction.transform.position + modelOffset; model.transform.rotation = Quaternion.RotateTowards(model.transform.rotation, targetRotation, MODEL_ROTATION_SPEED * Time.deltaTime); model.transform.position = Vector3.MoveTowards(model.transform.position, targetPosition, MODEL_MOVEMENT_SPEED * Time.deltaTime); } if (stepper != null && TryGetTouchPosition(out Vector2 touchPosition) && raycastManager.Raycast(touchPosition, raycastHits, TrackableType.Image)) { // Raycast hits are sorted by distance, so the first one // will be the closest hit. var hitPose = raycastHits[0].pose; // Advance to the next step stepper.NextStep(); } }