using System.Collections; using System.Collections.Generic; using UnityEngine; public class Controller : MonoBehaviour { private Touch _OldTouch1; private Touch _OldTouch2; Vector2 _M_Screenpos = new Vector2(); bool _bMoveOrRotation; Vector3 _OldPosition; void Start() { _OldPosition = Camera.main.transform.position; } void Update() { if (Input.touchCount <= 0) { return; } if (1 == Input.touchCount) { if (_bMoveOrRotation) { Touch _Touch = Input.GetTouch(0); Vector2 _DeltaPos = _Touch.deltaPosition; transform.Rotate(Vector3.down * _DeltaPos.x, Space.World); transform.Rotate(Vector3.right * _DeltaPos.y, Space.World); } else { if (Input.touches[0].phase == TouchPhase.Began) { _M_Screenpos = Input.touches[0].position; } else if (Input.touches[0].phase == TouchPhase.Moved) { Camera.main.transform.Translate(new Vector3(-Input.touches[0].deltaPosition.x * Time.deltaTime * 0.1f, -Input.touches[0].deltaPosition.y * Time.deltaTime * 0.1f, 0)); } } } Touch _NewTouch1 = Input.GetTouch(0); Touch _NewTouch2 = Input.GetTouch(1); if (_NewTouch2.phase == TouchPhase.Began) { _OldTouch2 = _NewTouch2; _OldTouch1 = _NewTouch1; return; } float _OldDistance = Vector2.Distance(_OldTouch1.position, _OldTouch2.position); float _NewDistance = Vector2.Distance(_NewTouch1.position, _NewTouch2.position); float _Offset = _NewDistance - _OldDistance; float _ScaleFactor = _Offset / 100f; Vector3 _LocalScale = transform.localScale; Vector3 _Scale = new Vector3(_LocalScale.x + _ScaleFactor, _LocalScale.y + _ScaleFactor, _LocalScale.z + _ScaleFactor); if (_Scale.x > 0.3f && _Scale.y > 0.3f && _Scale.z > 0.3f) { transform.localScale = _Scale; } _OldTouch1 = _NewTouch1; _OldTouch2 = _NewTouch2; } public void BackPosition() { Camera.main.transform.position = _OldPosition; Camera.main.transform.eulerAngles = Vector3.zero; } public void RotationOrMove() { _bMoveOrRotation = !_bMoveOrRotation; } }