void Update() { List <Touch> touches = TouchHelper.GetTouches(); if (touches.Count > 0) { var touch = touches[0]; if (touch.phase == TouchPhase.Began) { var ray = Camera.main.ScreenPointToRay(touch.position); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100)) { ARObject arObj = hit.collider.GetComponent <ARObject>(); if (arObj == null) { arObj = hit.collider.GetComponentInParent <ARObject>(); } if (arObj != null) { SelectObject(arObj); } } } } }
// Update is called once per frame void Update() { List <Touch> Touches = TouchHelper.GetTouches(); if (Touches.Count <= 0) { return; } foreach (Touch touch in Touches) { Vector2 touchPosition = Camera.main.ScreenToWorldPoint(touch.position); switch (touch.phase) { case TouchPhase.Began: foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList) { if (fruitPiece.GetComponent <BoxCollider2D>().OverlapPoint(touchPosition)) { // fruit is grabbed by the touch fruitPiece.GetComponent <SimpleGravity>().velocity = Vector3.zero; fruitPiece.GetComponent <SimpleGravity>().gravity = 0.0f; fruitPiece.GetComponent <FruitBase>().GrabBy(touch.fingerId); } } break; case TouchPhase.Moved: foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList) { if (fruitPiece.GetComponent <FruitBase>().IsGrabbedBy(touch.fingerId)) { fruitPiece.transform.position = new Vector3(touchPosition.x, touchPosition.y, 0); } } break; case TouchPhase.Ended: foreach (GameObject fruitPiece in godObject.GetComponent <PieceGenerator>().ActiveFruitList) { if (fruitPiece.GetComponent <FruitBase>().IsGrabbedBy(touch.fingerId)) { fruitPiece.GetComponent <FruitBase>().Release(); // Calculate releasing velocity. Vector2 previousPos = Camera.main.ScreenToWorldPoint(touch.position - touch.deltaPosition); Vector3 deltaPos = touchPosition - previousPos; float multiplier = 0.5f / touch.deltaTime; Debug.Log("Delta screen position: x " + deltaPos.x + ",y " + deltaPos.y); Debug.Log("Delta screen time: " + Time.deltaTime); fruitPiece.GetComponent <SimpleGravity>().velocity = new Vector3(deltaPos.x * multiplier, deltaPos.y * multiplier, 0); fruitPiece.GetComponent <SimpleGravity>().gravity = SimpleGravity.GRAVITY; } } break; } } }
void Update() { List <Touch> touches = TouchHelper.GetTouches(); if (touches.Count > 0) { var touch = touches[0]; if (touch.phase == TouchPhase.Moved) { targetObject.Rotate(targetObject.up * touch.deltaPosition.x * speed * Time.deltaTime); } } }
void Update() { List <Touch> touches = TouchHelper.GetTouches(); if (touches.Count > 0) { var touch = touches[0]; if (touch.phase == TouchPhase.Began) { float closestDot = -1f; foreach (Transform axis in axes) { Ray ray = Camera.main.ScreenPointToRay(new Vector3(touch.position.x, touch.position.y, 0)); Vector3 vectorToAxis = (axis.position - Camera.main.transform.position).normalized; float currentDot = Vector3.Dot(ray.direction, vectorToAxis); if (currentDot > closestDot) { closestDot = currentDot; activeAxis = axis; } } } if (touch.phase == TouchPhase.Moved) { Vector3 offset = activeAxis.forward; offset.x *= touch.deltaPosition.x; offset.y *= touch.deltaPosition.y; offset.z *= touch.deltaPosition.x; if (widgetType == WidgetType.TranslateWidget) { targetObject.position += offset * speed * Time.deltaTime; } else if (widgetType == WidgetType.ScaleWidget) { targetObject.localScale += offset * speed * Time.deltaTime; } } if (touch.phase == TouchPhase.Ended) { activeAxis = null; } } }