public void Clear() { if (spawnedObject != null) { // Destroy existing object Destroy(spawnedObject); ObjectPlaced?.Invoke(null); } }
// Update is called once per frame void Update() { RaycastHit hit; if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { if (hit.collider.GetComponent <PlaceToGo>()) { myPlaceToGo = hit.collider.GetComponent <PlaceToGo>(); avatarAgent.SetDestination(myPlaceToGo.positionAvatar); placeToGoIsNext = true; objectToPlacedIsNext = false; } else if (hit.collider.GetComponent <ObjectPlaced>()) { myObjectPlaced = hit.collider.GetComponent <ObjectPlaced>(); avatarAgent.SetDestination(myObjectPlaced.positionAvatar); objectToPlacedIsNext = true; placeToGoIsNext = false; } else { placeToGoIsNext = false; objectToPlacedIsNext = false; avatarAgent.SetDestination(hit.point); } } } if (placeToGoIsNext) { if (Mathf.Abs(avatar.transform.position.x - avatarAgent.destination.x) < 0.11f && Mathf.Abs(avatar.transform.position.z - avatarAgent.destination.z) < 0.11f) { Debug.Log("give"); placeToGoIsNext = false; } } if (objectToPlacedIsNext) { if (Mathf.Abs(avatar.transform.position.x - avatarAgent.destination.x) < 0.11f && Mathf.Abs(avatar.transform.position.z - avatarAgent.destination.z) < 0.11f) { Debug.Log("take"); //objectIHave.Add (PlaceToGo) objectToPlacedIsNext = false; } } }
public void Place(BoardObject obj, Vector2Int position) { if (objects.ContainsKey(position)) { Debug.LogError($"Position {position} already contains object."); return; } if (objects.ContainsValue(obj)) { objects.Remove(GetPosition(obj)); } objects[position] = obj; ObjectPlaced?.Invoke(obj, position); }
void Update() { if (Input.touchCount == 0) { return; } Touch touch = Input.GetTouch(0); if (IsTouchOverUIObject(touch)) { return; } if (touch.phase == TouchPhase.Began) { if (m_RaycastManager.Raycast(touch.position, m_Hits, TrackableType.PlaneWithinPolygon)) { Pose hitPose = m_Hits[0].pose; if (spawnedObject != null) { // Destroy existing object Destroy(spawnedObject); } spawnedObject = Instantiate(placedPrefab, hitPose.position, hitPose.rotation); // content face the user Vector3 lookVector = Camera.main.transform.position - spawnedObject.transform.position; spawnedObject.transform.rotation = Quaternion.LookRotation(lookVector, Vector3.up); spawnedObject.transform.rotation = new Quaternion(0, spawnedObject.transform.rotation.y, 0, spawnedObject.transform.rotation.w) * Quaternion.Euler(0, 180, 0); ObjectPlacementHandler objectPlacementHandler = spawnedObject.GetComponent <ObjectPlacementHandler>(); objectPlacementHandler.SetObject(hitPose.position); m_UIPanelRoot.SetActive(true); ObjectPlaced?.Invoke(objectPlacementHandler); } } }