void AddNew(GameObject stickerPrefab) { if (selectedTouchCollider) { manipulating = false; } selectedTouchCollider = Instantiate(stickerPrefab).GetComponentInChildren <TouchCollider>(); var sticker = selectedTouchCollider.sticker; selectedTouchCollider.sticker.parent = currentStickerParent.transform; var ray = arCamera.ScreenPointToRay(screenCenter); var hits = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer); RaycastHit?highestPriorityHit = null; foreach (var hit in hits) { highestPriorityHit = hit; if (hit.transform.tag == arDetectedPlaneTag) { break; } } if (highestPriorityHit.HasValue) { sticker.position = highestPriorityHit.Value.point; var arCameraPosition = arCamera.transform.position; sticker.LookAt(new Vector3(arCameraPosition.x, sticker.position.y, arCameraPosition.z)); } }
protected override NPCConversation GetNextConversation() { if (hasFallen) { if (!isConversationAfterFallDone) { isConversationAfterFallDone = true; return(conversationAfterFall); } return(PromptConversation); } else if (isConversation1Done) { foreach (Transform apple in appleTransforms) { if (TouchCollider.OverlapPoint(apple.position)) { Destroy(apple.gameObject); return(conversation2); } } } else if (!isConversation1Done && CurrentConversation == PromptConversation) { return(conversation1); } return(PromptConversation); }
public void OnPointerUpDeleteButton() { if (selectedTouchCollider) { Destroy(selectedTouchCollider.sticker.gameObject); deleteButtonDot.enabled = false; selectedTouchCollider = null; manipulating = false; } }
void ResetSurfboard() { ResetLightingRotation(); selectedTouchCollider = surfboardTouchCollider; var sticker = surfboardTouchCollider.sticker; var ray = arCamera.ScreenPointToRay(screenCenter); var hits = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer); RaycastHit?highestPriorityHit = null; foreach (var hit in hits) { highestPriorityHit = hit; if (hit.transform.tag == arDetectedPlaneTag) { break; } } if (highestPriorityHit.HasValue) { sticker.position = highestPriorityHit.Value.point; var arCameraPosition = arCamera.transform.position; sticker.LookAt(new Vector3(arCameraPosition.x, sticker.position.y, arCameraPosition.z)); } }
public override bool PressDown(TouchCollider tc) { eventSet.DoPress(); return(base.PressDown(tc)); }
public override bool Release(TouchCollider tc) { eventSet.DoRelease(); return(base.Release(tc)); }
public override bool Hold(TouchCollider tc) { eventSet.DoHold(); return(base.Hold(tc)); }
public override void PressDown(TouchCollider tc) { base.PressDown(tc); eventSet.DoPress(); }
public override void Release(TouchCollider tc) { base.Release(tc); eventSet.DoRelease(); }
public override void Hold(TouchCollider tc) { base.Hold(tc); eventSet.DoHold(); }
void Update() { if (Input.touchCount > 0) { if (Input.touchCount < 2) { var fingerId = Input.touches[0].fingerId; switch (Input.touches[0].phase) { case TouchPhase.Began: RaycastHit stickerHit; var ray = arCamera.ScreenPointToRay(Input.touches[0].position); if (Physics.Raycast(ray, out stickerHit, maxRayDistance, stickerLayer)) { selectedTouchCollider = stickerHit.transform.GetComponent <TouchCollider>(); draggingFingerId = fingerId; touchOffset = Input.touches[0].position - RemoveZVector(arCamera.WorldToScreenPoint(selectedTouchCollider.sticker.position)); } ray = arCamera.ScreenPointToRay(Input.touches[0].position - touchOffset); var planeHits = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer); RaycastHit?highestPriorityHit = null; foreach (var planeHit in planeHits) { highestPriorityHit = planeHit; if (planeHit.transform.tag == arDetectedPlaneTag) { break; } } if (highestPriorityHit.HasValue) { lastHitPoint = highestPriorityHit.Value.point; } break; case TouchPhase.Moved: case TouchPhase.Stationary: ray = arCamera.ScreenPointToRay(Input.touches[0].position - touchOffset); planeHits = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer); highestPriorityHit = null; foreach (var planeHit in planeHits) { highestPriorityHit = planeHit; if (planeHit.transform.tag == arDetectedPlaneTag) { break; } } if (draggingFingerId == fingerId && selectedTouchCollider && highestPriorityHit.HasValue) { var hitPoint = highestPriorityHit.Value.point; if (!wasTwoFinger) { selectedTouchCollider.sticker.Translate((hitPoint - lastHitPoint), Space.World); } lastHitPoint = hitPoint; manipulating = true; wasTwoFinger = false; } break; } } } else { draggingFingerId = -1; if (selectedTouchCollider) { manipulating = false; } } }