https://www.youtube.com/watch?v=xguiSueY1Lw&list=PL6VJLOFcTt7awvyIGIbLLPOBrW6-Y1R-J&index=5&ab_channel=DineshPunni
(接笔记03)
Create New Folder (Scripts)
Create C# Script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
   | using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.ARFoundation; using UnityEngine.XR.ARSubsystems;
  [RequireComponent(typeof(ARRaycastManager))] public class ARTapToPlaceObject : MonoBehaviour {     public GameObject gameObjectToInstantiate;          private GameObject spawnedObject;     private ARRaycastManager arRaycastManager;     private Vector2 touchPosition;          static List<ARRaycastHit> hits = new List<ARRaycastHit>();          private void Awake()     {         arRaycastManager = GetComponent<ARRaycastManager>();     }          bool TryGetTouchPosition(out Vector2 touchPosition)     {         if(Input.touchCount > 0)         {             touchPosition = Input.GetTouch(0).position;             return true;         }                  touchPosition = default;         return false;     }          void Update()     {         if(!TryGetTouchPosition(out Vector2 touchPosition))         {             return;         }         if(arRaycastManager.Raycast(touchPosition,hits,TrackableType.PlaneWithinPolygon))         {             var hitPose = hits[0].pose;                          if(spawnedObject == null)             {                 spawnedObject = Instantiate(gameObjectToInstantiate, hitPose.position, hitPose.rotation);             }             else             {                 spawnedObject.transform.position = hitPose.position;             }         }     }      }
 
   | 
 
把Script拖进AR Session Origin
Create Cube拖进Prefabs,拖进GameObjectToInstantiate
Build
Yeah~