CN113961130A - 一种基于Unity3D模拟旋钮操作的方法 - Google Patents
一种基于Unity3D模拟旋钮操作的方法 Download PDFInfo
- Publication number
- CN113961130A CN113961130A CN202111347375.1A CN202111347375A CN113961130A CN 113961130 A CN113961130 A CN 113961130A CN 202111347375 A CN202111347375 A CN 202111347375A CN 113961130 A CN113961130 A CN 113961130A
- Authority
- CN
- China
- Prior art keywords
- vector
- coordinate
- knob
- calculating
- unity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/0486—Drag-and-drop
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种基于Unity3D模拟旋钮操作的方法,包括:S1、获取模拟旋钮中心点在屏幕上的坐标p0;S2、获取用户点击屏幕拖动模拟旋钮的初始点击位置的坐标p1,并获取用户点击屏幕拖动模拟旋钮的一帧后拖动位置的坐标p2;S3、计算坐标p0指向坐标p1的向量v0(x0,y0),并计算坐标p0指向坐标p2的向量v1(x1,y1),根据向量v0的向量坐标和向量v1的向量坐标计算得到向量v0和向量v1之间的夹角θ;S4、将向量v0和向量v1进行叉乘计算得到向量n0,根据向量n0计算模拟旋钮的旋转方向,控制模拟旋钮按照旋转方向和夹角θ进行旋转;S5、判断用户点击屏幕拖动模拟旋钮的操作是否结束,若否,将坐标p2的值赋给坐标p1,返回S2。计算方法简单实用,实现了模拟旋钮旋转的“跟手”操作。
Description
技术领域
本发明涉及计算机软件领域,尤其涉及一种基于Unity3D模拟旋钮操作的方法。
背景技术
在游戏互动和一些应用场景中,经常需要模拟一些旋钮的旋转操作。比如模拟一个音量旋钮,那么在游戏互动中需要模拟一个旋转阀门开关,在平时生活中看似很简单的一个操作,在屏幕上将该旋转阀门开关拖动起来却没那么容易实现,且在Unity3D中,并没有直接可以使用的功能,现有技术中也没有相关的***息。
发明内容
(一)要解决的技术问题
为了解决现有技术的上述问题,本发明提供一种基于Unity3D模拟旋钮操作的方法,能够实现在Unity3D中操作模拟旋钮。
(二)技术方案
为了达到上述目的,本发明采用的技术方案为:一种基于Unity3D模拟旋钮操作的方法,包括:
S1、获取模拟旋钮中心点在屏幕上的坐标p0;
S2、获取用户点击屏幕拖动所述模拟旋钮的初始点击位置的坐标p1,并获取用户点击屏幕拖动所述模拟旋钮的一帧后拖动位置的坐标p2;
S3、计算所述坐标p0指向所述坐标p1的向量v0((x0,y0)),并计算所述坐标p0指向所述坐标p2的向量v1(x1,y1),根据所述向量v0的向量坐标和向量v1的向量坐标计算得到所述向量v0和向量v1之间的夹角θ;
S4、将所述向量v0和向量v1进行叉乘计算得到向量n0,根据所述向量n0计算所述模拟旋钮的旋转方向,控制所述模拟旋钮按照所述旋转方向和夹角θ进行旋转;
S5、判断用户点击屏幕拖动所述模拟旋钮的操作是否结束,若否,将所述坐标p2的值赋给坐标p1,返回S2。
(三)有益效果
本发明的有益效果是:通过获取模拟旋钮中心点坐标以及获取用户点击屏幕拖动旋转模拟旋钮过程中每一帧点击/拖动的位置坐标,能够计算出模拟旋钮每一帧的旋转角度和方向,计算方法简单实用,实现了模拟旋钮旋转的“跟手”操作。
附图说明
图1为本发明的一种基于Unity3D模拟旋钮操作的方法的流程图;
图2为本发明的一种基于Unity3D模拟旋钮操作的方法的细节流程图;
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
实施例一
请参照图1所示,一种基于Unity3D模拟旋钮操作的方法,包括:
S1、获取模拟旋钮中心点在屏幕上的坐标p0;
S2、获取用户点击屏幕拖动(如手指触控或鼠标点击)所述模拟旋钮的初始点击位置的坐标p1,并获取用户点击屏幕拖动所述模拟旋钮的一帧后拖动位置的坐标p2;
S3、计算所述坐标p0指向所述坐标p1的向量v0(x0,y0),并计算所述坐标p0指向所述坐标p2的向量v1(x1,y1),具体为:v0=p1-p0,v1=p2-p0;
根据所述向量v0的向量坐标和向量v1的向量坐标计算得到所述向量v0和向量v1之间的夹角θ;
S4、将所述向量v0和向量v1进行叉乘计算得到向量n0,根据所述向量n0计算所述模拟旋钮的旋转方向,控制所述模拟旋钮按照所述旋转方向和夹角θ进行旋转;
S5、判断用户点击屏幕拖动所述模拟旋钮的操作是否结束,若否,将所述坐标p2的值赋给坐标p1,返回S2。
其中,所述S1包括:
通过Unity函数Camera.WorldToScreenPoint()获取模拟旋钮中心点在屏幕上的坐标p0。
其中,所述S3中根据所述向量v0的向量坐标和向量v1的向量坐标计算得到所述向量v0和向量v1之间的夹角θ包括:
将所述向量v0和向量v1进行点乘得到点乘结果d,通过公式d=|v0|·|v1|·Cosθ得到Cosθ=d/(|v0|·|v1|),其中||为取模符号,之后通过Unity的反三角函数Mathf.ACos(Cosθ)计算得到所述向量v0和向量v1之间的夹角θ。
其中,所述将所述向量v0和向量v1进行点乘得到点乘结果d包括:
使用Unity的点乘函数d=Vector2.Dot(v0,v1)计算得到点乘结果d,或者通过公式d=v0(x0,y0)·v1(x1,y1)=x0·x1+y0·y1计算得到点乘结果d。
其中,在所述Cosθ=d/(|v0|·|v1|)中的|v0|和|v1|的计算方法包括:
通过v0.magnitude和v1.magnitude分别计算出|v0|和|v1|的结果,其计算过程具体为|v0|=magnitude(x0,y0),|v1|=magnitude(x1,y1),进而得到|v0|和|v1|;
其中,所述S4中将所述向量v0和向量v1进行叉乘计算得到向量n0包括:
使用unity叉乘函数n0=Vector3.Cross(v0,v1)计算得到向量n0。
其中,所述S4中根据所述向量n0计算所述模拟旋钮的旋转方向包括:
若所述n0的z轴值为正,则计算出模拟旋钮的旋转方向为逆时针方向,若所述n0的z轴值为负,则计算出模拟旋钮的旋转方向为顺时针方向。
综上所述,本发明提供的一种基于Unity3D模拟旋钮操作的方法,通过获取模拟旋钮中心点坐标以及获取用户点击屏幕拖动旋转模拟旋钮过程中每一帧点击/拖动的位置坐标,能够计算出模拟旋钮每一帧的旋转角度和方向,计算方法简单实用,实现了模拟旋钮旋转的“跟手”操作。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种基于Unity3D模拟旋钮操作的方法,其特征在于,包括:
S1、获取模拟旋钮中心点在屏幕上的坐标p0;
S2、获取用户点击屏幕拖动所述模拟旋钮的初始点击位置的坐标p1,并获取用户点击屏幕拖动所述模拟旋钮的一帧后拖动位置的坐标p2;
S3、计算所述坐标p0指向所述坐标p1的向量v0(x0,y0),并计算所述坐标p0指向所述坐标p2的向量v1(x1,y1),根据所述向量v0的向量坐标和向量v1的向量坐标计算得到所述向量v0和向量v1之间的夹角θ;
S4、将所述向量v0和向量v1进行叉乘计算得到向量n0,根据所述向量n0计算所述模拟旋钮的旋转方向,控制所述模拟旋钮按照所述旋转方向和夹角θ进行旋转;
S5、判断用户点击屏幕拖动所述模拟旋钮的操作是否结束,若否,将所述坐标p2的值赋给坐标p1,返回S2。
2.根据权利要求1所述的基于Unity3D模拟旋钮操作的方法,其特征在于,所述S1包括:
通过Unity函数Camera.WorldToScreenPoint()获取模拟旋钮中心点在屏幕上的坐标p0。
3.根据权利要求1所述的基于Unity3D模拟旋钮操作的方法,其特征在于,所述S3中根据所述向量v0的向量坐标和向量v1的向量坐标计算得到所述向量v0和向量v1之间的夹角θ包括:
将所述向量v0和向量v1进行点乘得到点乘结果d,通过公式d=|v0|·|v1|·Cosθ得到Cosθ=d/(|v0|·|v1|),其中||为取模符号,之后通过Unity的反三角函数Mathf.ACos(Cosθ)计算得到所述向量v0和向量v1之间的夹角θ。
4.根据权利要求3所述的基于Unity3D模拟旋钮操作的方法,其特征在于,所述将所述向量v0和向量v1进行点乘得到点乘结果d包括:
使用Unity的点乘函数d=Vector2.Dot(v0,v1)计算得到点乘结果d,或者通过公式d=v0(x0,y0)·v1(x1,y1)=x0·x1+y0·y1)计算得到点乘结果d。
6.根据权利要求1所述的基于Unity3D模拟旋钮操作的方法,其特征在于,所述S4中将所述向量v0和向量v1进行叉乘计算得到向量n0包括:
使用unity叉乘函数n0=Vector3.Cross(v0,v1)计算得到向量n0。
7.根据权利要求1或6所述的基于Unity3D模拟旋钮操作的方法,其特征在于,所述S4中根据所述向量n0计算所述模拟旋钮的旋转方向包括:
若所述n0的z轴值为正,则计算出模拟旋钮的旋转方向为逆时针方向,若所述n0的z轴值为负,则计算出模拟旋钮的旋转方向为顺时针方向。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347375.1A CN113961130A (zh) | 2021-11-15 | 2021-11-15 | 一种基于Unity3D模拟旋钮操作的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111347375.1A CN113961130A (zh) | 2021-11-15 | 2021-11-15 | 一种基于Unity3D模拟旋钮操作的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113961130A true CN113961130A (zh) | 2022-01-21 |
Family
ID=79470506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111347375.1A Pending CN113961130A (zh) | 2021-11-15 | 2021-11-15 | 一种基于Unity3D模拟旋钮操作的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961130A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110309919A1 (en) * | 2010-06-22 | 2011-12-22 | Microsoft Corporation | Providing Directional Force Feedback In Freespace |
CN103513919A (zh) * | 2013-04-28 | 2014-01-15 | 展讯通信(上海)有限公司 | 一种触控设备及3d转盘的显示控制方法、装置 |
CN106178504A (zh) * | 2016-06-27 | 2016-12-07 | 网易(杭州)网络有限公司 | 虚拟对象运动控制方法及装置 |
CN108958619A (zh) * | 2017-05-26 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 用户界面操作方法、设备及计算机可读存储介质 |
CN109887093A (zh) * | 2019-01-17 | 2019-06-14 | 珠海金山网络游戏科技有限公司 | 一种游戏细节层次处理方法及*** |
CN110930488A (zh) * | 2019-11-15 | 2020-03-27 | 深圳市瑞立视多媒体科技有限公司 | 鱼体行为模拟方法、装置、设备及存储介质 |
-
2021
- 2021-11-15 CN CN202111347375.1A patent/CN113961130A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110309919A1 (en) * | 2010-06-22 | 2011-12-22 | Microsoft Corporation | Providing Directional Force Feedback In Freespace |
CN103513919A (zh) * | 2013-04-28 | 2014-01-15 | 展讯通信(上海)有限公司 | 一种触控设备及3d转盘的显示控制方法、装置 |
CN106178504A (zh) * | 2016-06-27 | 2016-12-07 | 网易(杭州)网络有限公司 | 虚拟对象运动控制方法及装置 |
CN108958619A (zh) * | 2017-05-26 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 用户界面操作方法、设备及计算机可读存储介质 |
CN109887093A (zh) * | 2019-01-17 | 2019-06-14 | 珠海金山网络游戏科技有限公司 | 一种游戏细节层次处理方法及*** |
CN110930488A (zh) * | 2019-11-15 | 2020-03-27 | 深圳市瑞立视多媒体科技有限公司 | 鱼体行为模拟方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
张晴: "于Unity3D的初中物理虚拟实验***的设计与实现——以力学实验为例", 中国优秀硕士学位论文全文数据库社会科学Ⅱ辑, pages 5 * |
张晴: "基于Unity3D的初中物理虚拟实验***的设计与实现——以力学实验为例", pages 5 * |
李长锋;修毅;: "OpenGL下三维模型的显示和自由旋转", vol. 26, no. 03 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687230B2 (en) | Manipulating 3D virtual objects using hand-held controllers | |
CN111145326B (zh) | 三维虚拟云模型的处理方法、存储介质、处理器及电子装置 | |
WO2018040511A1 (zh) | 基于ar的二维图像转换至三维场景的实现方法 | |
Ramani | A gesture-free geometric approach for mid-air expression of design intent in 3D virtual pottery | |
Wan et al. | Realistic virtual hand modeling with applications for virtual grasping | |
CN109732593B (zh) | 一种机器人的远端控制方法、装置及终端设备 | |
CN106600664B (zh) | 对称图形的绘制方法和装置 | |
CN103543923B (zh) | 控件的点击事件处理方法及*** | |
Kang et al. | Editing 3D models on smart devices | |
CN103077025B (zh) | 一种封闭几何图形擦除轨迹线并生成新轨迹线的方法 | |
Cukovic et al. | Engineering design education for industry 4.0: implementation of augmented reality concept in teaching CAD courses | |
AU2018226403A1 (en) | Brush stroke generation with deep neural networks | |
CN113961130A (zh) | 一种基于Unity3D模拟旋钮操作的方法 | |
Liverani et al. | Towards interactive finite element analysis of shell structures in virtual reality | |
Suk et al. | A study on the effect of the use of augmented reality on students' quantity take-off performance | |
US20200098194A1 (en) | Virtual Reality Anchored Annotation Tool | |
Guo et al. | The simulation of the brush stroke based on force feedback technology | |
Kuester et al. | 3DIVS: 3-dimensional immersive virtual sculpting | |
CN104750905B (zh) | 用于设计三维建模对象的计算机实现的方法 | |
Kang et al. | An alternative method for smartphone input using AR markers | |
EP4024342A1 (en) | Polybezier-based digital ink strokes | |
Han et al. | Ar pottery: Experiencing pottery making in the augmented space | |
Kuester et al. | Designers workbench: toward real-time immersive modeling | |
Yin et al. | HUA: an interactive calligraphy and ink-wash painting system | |
WO2023206257A1 (zh) | 手写笔迹生成方法、装置、计算机设备和可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |