using UnityEngine; public class MouseDrag3 : MonoBehaviour { public Transform head; public int ido; public bool isClick; public bool isClick2; public bool isHead; public bool isIdo; public bool isPlay; public bool isSelect; public bool isStop; public Maid maid; public int no; public GameObject obj; public Transform Pelvis; public bool reset; public bool shodaiFlg = false; public Transform Spine; public Transform Spine0a; public Transform Spine1; public Transform Spine1a; private float doubleTapTime; private int idoOld; private Vector3 mouseIti; private Vector3 mouseIti2; private Vector3 off; private Vector3 off2; private Vector3 pos3; private Quaternion quaL; private Quaternion quaR; private Vector3 rotate; private Vector3 rotate1; private Vector3 rotate2; private Vector3 rotate3; private Vector3 rotate4; private Vector3 rotate5; private Vector3 rotateL; private Vector3 rotateR; private Vector3 worldPoint; public void Update() { doubleTapTime += Time.deltaTime; } public void OnMouseDown() { if (maid == null) return; worldPoint = Camera.main.WorldToScreenPoint(transform.position); mouseIti = Input.mousePosition; if (ido == 1 || ido == 4 || ido == 8) rotate = head.localEulerAngles; if (ido == 2 || ido == 5) { rotate1 = Spine1a.localEulerAngles; rotate2 = Spine1.localEulerAngles; rotate3 = Spine0a.localEulerAngles; rotate4 = Spine.localEulerAngles; } if (ido == 3 || ido == 6) rotate5 = Pelvis.localEulerAngles; if (ido == 7) { rotateR = maid.body0.quaDefEyeR.eulerAngles; rotateL = maid.body0.quaDefEyeL.eulerAngles; quaL = maid.body0.quaDefEyeL; quaR = maid.body0.quaDefEyeR; } if (ido == 9) { worldPoint = Camera.main.WorldToScreenPoint(transform.position); off = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z)); off2 = new Vector3(obj.transform.position.x - head.position.x, obj.transform.position.y - head.position.y, obj.transform.position.z - head.position.z); mouseIti = Input.mousePosition; } isSelect = true; isPlay = maid.body0.m_Bones.GetComponent().isPlaying; if (!isPlay) isStop = true; if (doubleTapTime < 0.300000011920929 && isClick2 && ido == idoOld) isHead = true; if (doubleTapTime >= 0.300000011920929 && isClick) isClick = false; if (doubleTapTime >= 0.300000011920929 && isClick2) isClick2 = false; doubleTapTime = 0.0f; pos3 = Input.mousePosition - mouseIti; } public void OnMouseUp() { if (maid == null || doubleTapTime >= 0.300000011920929) return; if (ido == 7) isClick = true; isClick2 = true; doubleTapTime = 0.0f; idoOld = ido; } public void OnMouseDrag() { if (maid == null) return; if (isPlay && mouseIti != Input.mousePosition) { maid.body0.m_Bones.GetComponent().Stop(); isStop = true; isPlay = false; } if (reset) { reset = false; worldPoint = Camera.main.WorldToScreenPoint(transform.position); if (ido == 1 || ido == 4 || ido == 8) rotate = head.localEulerAngles; if (ido == 2 || ido == 5) { rotate1 = Spine1a.localEulerAngles; rotate2 = Spine1.localEulerAngles; rotate3 = Spine0a.localEulerAngles; rotate4 = Spine.localEulerAngles; } if (ido == 3 || ido == 6) rotate5 = Pelvis.localEulerAngles; if (ido == 7) { rotateR = maid.body0.quaDefEyeR.eulerAngles; rotateL = maid.body0.quaDefEyeL.eulerAngles; quaL = maid.body0.quaDefEyeL; quaR = maid.body0.quaDefEyeR; } mouseIti = Input.mousePosition; if (ido == 9) { worldPoint = Camera.main.WorldToScreenPoint(transform.position); off = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z)); off2 = new Vector3(obj.transform.position.x - head.position.x, obj.transform.position.y - head.position.y, obj.transform.position.z - head.position.z); mouseIti = Input.mousePosition; } } if (mouseIti != Input.mousePosition) { var position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, worldPoint.z); Vector3 vector3_1 = Input.mousePosition - mouseIti; Transform transform = GameMain.Instance.MainCamera.gameObject.transform; Vector3 vector3_2 = transform.TransformDirection(Vector3.right); Vector3 vector3_3 = transform.TransformDirection(Vector3.forward); if (mouseIti2 != Input.mousePosition) { if (ido == 1) { isIdo = true; head.localEulerAngles = rotate; head.RotateAround(head.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / 3f); head.RotateAround(head.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), (float) (-(double) vector3_1.x / 4.5)); } if (ido == 4) { isIdo = true; head.localEulerAngles = rotate; head.localRotation = Quaternion.Euler(head.localEulerAngles) * Quaternion.AngleAxis(vector3_1.x / 3f, Vector3.right); } if (ido == 8) { isIdo = true; head.localEulerAngles = rotate; head.localRotation = Quaternion.Euler(head.localEulerAngles) * Quaternion.AngleAxis((float) (-(double) vector3_1.x / 3.0), Vector3.forward); } if (ido == 9) head.transform.position = new Vector3(head.transform.position.x, (Camera.main.ScreenToWorldPoint(position) + off - off2).y, head.transform.position.z); if (ido == 2) { Spine1a.localEulerAngles = rotate1; Spine1.localEulerAngles = rotate2; Spine0a.localEulerAngles = rotate3; Spine.localEulerAngles = rotate4; float num1 = 1.5f; float num2 = 1f; float num3 = 0.03f; float num4 = 0.1f; float num5 = 0.09f; float num6 = 0.07f; Spine1a.RotateAround(Spine1a.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / num2 * num3); Spine1a.RotateAround(Spine1a.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), -vector3_1.x / num1 * num3); Spine1.RotateAround(Spine1.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / num2 * num4); Spine1.RotateAround(Spine1.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), -vector3_1.x / num1 * num4); Spine0a.RotateAround(Spine0a.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / num2 * num5); Spine0a.RotateAround(Spine0a.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), -vector3_1.x / num1 * num5); Spine.RotateAround(Spine.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / num2 * num6); Spine.RotateAround(Spine.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), -vector3_1.x / num1 * num6); } if (ido == 5) { Spine1a.localEulerAngles = rotate1; Spine1.localEulerAngles = rotate2; Spine0a.localEulerAngles = rotate3; Spine.localEulerAngles = rotate4; Spine1a.localRotation = Quaternion.Euler(Spine1a.localEulerAngles) * Quaternion.AngleAxis((float) (vector3_1.x / 1.5 * 0.0839999988675117), Vector3.right); Spine0a.localRotation = Quaternion.Euler(Spine0a.localEulerAngles) * Quaternion.AngleAxis((float) (vector3_1.x / 1.5 * 0.156000003218651), Vector3.right); Spine.localRotation = Quaternion.Euler(Spine.localEulerAngles) * Quaternion.AngleAxis((float) (vector3_1.x / 1.5 * 0.156000003218651), Vector3.right); } if (ido == 3) { Pelvis.localEulerAngles = rotate5; Pelvis.RotateAround(Pelvis.position, new Vector3(vector3_2.x, 0.0f, vector3_2.z), vector3_1.y / 4f); Pelvis.RotateAround(Pelvis.position, new Vector3(vector3_3.x, 0.0f, vector3_3.z), vector3_1.x / 6f); } if (ido == 6) { Pelvis.localEulerAngles = rotate5; Pelvis.localRotation = Quaternion.Euler(Pelvis.localEulerAngles) * Quaternion.AngleAxis(vector3_1.x / 3f, Vector3.right); } if (ido == 7) { var vector3_4 = new Vector3(rotateR.x, rotateR.y + vector3_1.x / 10f, rotateR.z + vector3_1.y / 10f); if (shodaiFlg) { if (vector3_4.z < 345.700012207031 && vector3_4.z > 335.700012207031) pos3.y = vector3_1.y; if (vector3_4.y < 347.600006103516 && vector3_4.y > 335.600006103516) pos3.x = vector3_1.x; } else { if (vector3_4.z < 354.799987792969 && vector3_4.z > 344.799987792969) pos3.y = vector3_1.y; if (vector3_4.y < 354.0 && vector3_4.y > 342.0) pos3.x = vector3_1.x; } maid.body0.quaDefEyeR.eulerAngles = new Vector3(rotateR.x, rotateR.y + pos3.x / 10f, rotateR.z + pos3.y / 10f); maid.body0.quaDefEyeL.eulerAngles = new Vector3(rotateL.x, rotateL.y - pos3.x / 10f, rotateL.z - pos3.y / 10f); } } mouseIti2 = Input.mousePosition; } } }