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~