TouchScript.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using Assets.Scripts.Models;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. /// <summary>
  7. /// Взаимодействие с GameObject.
  8. /// Перемещение, поворот, пропорциональное изменение размера.
  9. /// </summary>
  10. public class TouchScript : MonoBehaviour
  11. {
  12. // назначается в StagesEditorController при редактировании курсора-маркера
  13. public enum Tools { Move = 0, Rotate = 1, Scale = 2, Rectangle = 3 }
  14. public static Tools tools = Tools.Scale;
  15. // Start is called before the first frame update
  16. void Start()
  17. {
  18. }
  19. void Update()
  20. {
  21. if (Input.touchCount > 0)
  22. {
  23. Debug.Log("Global touch!");
  24. }
  25. }
  26. private Vector3 screenPoint;
  27. private Vector3 offset;
  28. private Vector3 curScreenPoint;
  29. private Vector3 curPosition;
  30. public float horizontalSpeed = 1.0F;
  31. public float verticalSpeed = 1.0F;
  32. private Vector3 scaleChange = new Vector3(-0.001f, -0.001f, -0.001f);
  33. private Vector3 positionChange = new Vector3(0.0f, -0.0005f, 0.0f);
  34. private bool increase = false;
  35. public GameObject panel;
  36. // Нажатие
  37. void OnMouseDown()
  38. {
  39. //Debug.Log(StagesEditorController.indexCursor);
  40. switch (tools)
  41. {
  42. case Tools.Move:
  43. screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);
  44. offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
  45. //panel.transform.position = transform.position;
  46. break;
  47. case Tools.Rotate:
  48. //Debug.Log("MouseDown: Rotate");
  49. break;
  50. case Tools.Scale:
  51. increase = !increase;
  52. //Debug.Log("MouseDown: Scale");
  53. break;
  54. //case Tools.Rectangle:
  55. // Debug.Log("MouseDown: Rectangle");
  56. // break;
  57. }
  58. }
  59. // Перемещение
  60. void OnMouseDrag()
  61. {
  62. float h = horizontalSpeed * Input.GetAxis("Mouse X");
  63. float v = verticalSpeed * Input.GetAxis("Mouse Y");
  64. switch (tools)
  65. {
  66. case Tools.Move:
  67. curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
  68. curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
  69. transform.position = curPosition;
  70. panel.transform.position = transform.position;
  71. break;
  72. case Tools.Rotate:
  73. //Debug.Log("MouseDrag: Rotate");
  74. //var rotation_x = StagesEditorController.sRotation.transform.GetChild(0).gameObject.transform;
  75. //var rotation_y = StagesEditorController.sRotation.transform.GetChild(1).gameObject.transform;
  76. //var rotation_z = StagesEditorController.sRotation.transform.GetChild(2).gameObject.transform;
  77. //if (rotation_x == transform)
  78. //{
  79. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(0, 0, h + v); // h v 0
  80. //}
  81. //if (rotation_y == transform)
  82. //{
  83. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(0, h + v, 0);
  84. //}
  85. //if (rotation_z == transform)
  86. //{
  87. // StagesEditorController.selectCursor.panel_cursor.transform.Rotate(-(h + v), 0, 0);
  88. //}
  89. //var Rotation = transform.parent.GetChild(2).gameObject;
  90. //Rotation.SetActive(true);
  91. // Вращение по всем осям
  92. //Debug.Log("y=" +Input.GetAxis("Mouse Y") + " x="+ Input.GetAxis("Mouse X"));
  93. //transform.localScale = new Vector3(mouse_axis_y + Input.GetAxis("Mouse Y"), 1f, mouse_axis_x + Input.GetAxis("Mouse X")) * 10f;
  94. //StagesEditorController.selectCursor.panel_cursor.transform.Rotate(h, v, 0);
  95. //StagesEditorController.ToolsValue(tools, StagesEditorController.selectCursor.panel_cursor.transform);
  96. break;
  97. case Tools.Scale:
  98. //var scale = transform.localScale;
  99. //transform.localScale = new Vector3(scale.x + (h + v), scale.z + (h + v), scale.z);
  100. //transform.transform.position = new Vector3(scale.x *5, 0, scale.z *5);
  101. if (increase)
  102. {
  103. scaleChange = new Vector3(0.01f, 0, 0.01f);
  104. positionChange = new Vector3(0.05f, 0, 0.05f);
  105. }
  106. else
  107. {
  108. scaleChange = new Vector3(-0.01f, 0, -0.01f);
  109. positionChange = new Vector3(-0.05f, 0, -0.05f);
  110. }
  111. transform.transform.localScale += scaleChange;
  112. transform.transform.position += positionChange;
  113. // Move upwards when the sphere hits the floor or downwards
  114. // when the sphere scale extends 1.0f.
  115. if (transform.transform.localScale.y < 0.01f || transform.transform.localScale.y > 10.0f)
  116. {
  117. increase = !increase;
  118. }
  119. //Debug.Log("MouseDrag: Scale");
  120. panel.transform.localScale = transform.localScale;
  121. break;
  122. case Tools.Rectangle:
  123. //Debug.Log("MouseDrag: Rectangle");
  124. // Вращение по всем осям
  125. //Debug.Log("y=" + Input.GetAxis("Mouse Y") + " x=" + Input.GetAxis("Mouse X"));
  126. //transform.localScale = new Vector3(mouse_axis_y + Input.GetAxis("Mouse Y"), 1f, mouse_axis_x + Input.GetAxis("Mouse X")) * 10f;
  127. //StagesEditorController.selectCursor.panel_cursor.transform.Rotate(h, v, 0);
  128. break;
  129. }
  130. }
  131. void OnMouseUp()
  132. {
  133. }
  134. }