滚轮旋转体拖拽监听事件的拖拽坐标修正问题
2017-05-04 01:04
323 查看
void Start() { var m_camera = FindObjectOfType<UIRoot>().transform.FindChild("Camera").GetComponent<Camera>(); UICamera.currentCamera = m_camera; UIEventListener.Get(gameObject).onDrag = gearOnDrag; UIEventListener.Get(gameObject).onDragStart = gearOnDragStart; UIEventListener.Get(gameObject).onDragEnd = gearOnDragEnd; } Vector3 m_gearDragPos = Vector3.zero; void gearOnDragStart(GameObject go) { var center = go.transform.localPosition; var touchPos = UICamera.currentTouch.pos; var pos = UICamera.currentCamera.ScreenToWorldPoint(new Vector3(touchPos.x, touchPos.y, 0f)); pos = UICamera.currentCamera.transform.InverseTransformPoint(pos); var axis = pos - center; m_gearDragPos = axis; } float m_lastEulerAngles; void gearOnDragEnd(GameObject go) { m_lastEulerAngles = go.transform.localEulerAngles.z; } void gearOnDrag(GameObject go, Vector2 delta) { var center = go.transform.localPosition; var touchPos = UICamera.currentTouch.pos; var pos = UICamera.currentCamera.ScreenToWorldPoint(new Vector3(touchPos.x, touchPos.y, 0f)); pos = UICamera.currentCamera.transform.InverseTransformPoint(pos); var axis = pos - center; var cross = Vector3.Cross(axis, m_gearDragPos); var angle = Vector3.Angle(axis, m_gearDragPos); var eulerAngles = cross.z < 0 ? angle : 360 - angle; go.transform.localEulerAngles = new Vector3(0, 0, eulerAngles + m_lastEulerAngles); }
相关文章推荐
- TreeView控件中拖拽事件与鼠标事件的坐标问题(MouseEventArgs 和 DragEventArgs 坐标问题)
- 解决WinForm 程序中由于拖拽导致MouseUp事件无法触发的问题
- 【疑难问题】——Game中子弹的代码结构设计(未完)——是每个实例去监听某个事件
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
- 解决swt桥连awt后鼠标滚轮事件(MouseEvent)无法接收的问题。
- 监听事件问题
- (javascript) 获取鼠标事件发生坐标的问题
- 关于lua中事件监听,多次请求网络的问题
- 解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题 --- 修正版
- Event System事件系统【SWING监听事件的线程问题】
- javascript监听鼠标滚轮事件浅析
- 关于flex中RichTextEditor控件,监听Ctrl+s事件和去除Ctrl+s按下时在RichTextEditor生成的不可知字符的问题
- 事件监听中的问题
- 多个onclick在一起只执行最后一个的问题解,其它是事件处理引发的问题 (JavaScript的监听事件函数attachEvent和addEventListener)
- as3.0 监听不到事件的问题
- .NET陷阱之四:事件监听带来的问题与弱监听器
- 完成根据坐标查询经纬度,修正显示树错误的问题
- Event System事件系统【SWING监听事件的线程问题】
- U3D简单的滚轮控制摄像机远近 与 监听双击事件(全屏)
- Android LinearLayout 嵌套 button 监听LinearLayout的onClickListener事件出现问题