I am making Augmented Reality based furniture application. Currently the issue that i am facing is my object is floating after placing. Secondly i want to stop my plane detection after I place an object and if i have to resume again what should i do? Lastly I want to ask how I reset my session so all planes and objects get removed. Code (CSharp): using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.Experimental.XR; using System; public class ARTapToPlaceObject : MonoBehaviour { public GameObject objectToPlace; public GameObject placementIndicator; private ARSessionOrigin arOrigin; private Pose placementPose; private bool placementPoseIsValid = false; private bool placementIsComplete = false; void Start() { arOrigin = FindObjectOfType<ARSessionOrigin>(); } void Update() { UpdatePlacementPose(); UpdatePlacementIndicator(); if (placementPoseIsValid && Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { PlaceObject(); } } private void PlaceObject() { placementIsComplete = true; Instantiate(objectToPlace, placementPose.position, placementPose.rotation); } private void UpdatePlacementIndicator() { if (!placementIsComplete && placementPoseIsValid) { placementIndicator.SetActive(true); placementIndicator.transform.SetPositionAndRotation(placementPose.position, placementPose.rotation); } else { placementIndicator.SetActive(false); } } private void UpdatePlacementPose() { var screenCenter = Camera.current.ViewportToScreenPoint(new Vector3(0.5f, 0.5f)); var hits = new List<ARRaycastHit>(); arOrigin.Raycast(screenCenter, hits, TrackableType.Planes); placementPoseIsValid = hits.Count > 0; if (placementPoseIsValid) { placementPose = hits[0].pose; var cameraForward = Camera.current.transform.forward; var cameraBearing = new Vector3(cameraForward.x, 0, cameraForward.z).normalized; placementPose.rotation = Quaternion.LookRotation(cameraBearing); } } }