Unity跟随鼠标顺时针或逆时针旋转之美
下面要分享的是在开发过程中如何跟随鼠标实现顺时针或逆时针旋转。
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RotateTest : MonoBehaviour
{private bool m_IsFirst = true;//用于记录第一帧按下鼠标时鼠标的位置,便于计算private Vector3 m_CurrentPos;//记录当前帧鼠标所在位置private bool m_IsClockwise;//是否顺时针private float m_RoundValue = 0;//记录总的旋转角度 用这个数值来控制一圈半//public float Speed = 58.8f;//动画播放速度//public GameObject Lingjian;//手轮零件//public GameObject NiutouAnimator;//动画private void OnMouseDrag(){//从摄像机发出到点击坐标的射线Ray clickRay = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit clickPoint;if (Physics.Raycast(clickRay, out clickPoint)){//划出射线,只有在scene视图中才能看到Debug.DrawLine(clickRay.origin, clickPoint.point, Color.red);//划出射线,只有在scene视图中才能看到Vector3 pos;pos = clickPoint.point;//射线碰撞的点//点与手轮之间的向量坐标pos.x = pos.x - transform.position.x;pos.y = pos.y - transform.position.y;//计算后鼠标以方向盘圆心为坐标原点的坐标位置Vector3 pos3 = new Vector3(pos.x, pos.y, 0);//用于记录第一帧按下鼠标时鼠标的位置,便于计算if (m_IsFirst){m_CurrentPos = pos3;m_IsFirst = false;}//计算当前帧和上一帧手指位置 用于判断旋转方向,在Unity3D中,Vector3.Dot表示求两个向量的点积;Vector3.Cross表示求两个向量的叉积。Vector3 currentPos = Vector3.Cross(pos3, m_CurrentPos);if (currentPos.z > 0){//是否顺时针m_IsClockwise = true;// print(m_RoundValue);print("顺时针");}else if (currentPos.z < 0){//是否顺时针m_IsClockwise = false;// print(m_RoundValue);print("逆时针");}if (m_CurrentPos != pos3){//范围内让方向盘随着手指转动//顺时针if (m_IsClockwise){//记录总的旋转角度 用这个数值来控制一圈半m_RoundValue += Vector3.Angle(m_CurrentPos, pos3);//动画播放速度//NiutouAnimator.GetComponent<Test_AnimSeek>().i = m_RoundValue / Speed;transform.Rotate(new Vector3(0, 0, -Vector3.Angle(m_CurrentPos, pos3)));}//逆时针else{//记录总的旋转角度 用这个数值来控制一圈半m_RoundValue -= Vector3.Angle(m_CurrentPos, pos3);//动画播放速度// NiutouAnimator.GetComponent<Test_AnimSeek>().i = m_RoundValue / Speed;transform.Rotate(new Vector3(0, 0, Vector3.Angle(m_CurrentPos, pos3)));}}m_CurrentPos = pos3;}}private void OnMouseUp(){m_IsFirst = true;}
}
Unity跟随鼠标顺时针或逆时针旋转之美相关推荐
- 神奇旋转,告诉我她是顺时针还是逆时针旋转
告诉我她是顺时针还是逆时针旋转,快被这个女人逼疯了 ^_^!! 一张图分出你是用左脑还是右脑 如果你看见这个舞女是顺时针转,说明你用的是右脑: 如果是逆时针转,说明你用的左脑. 耶鲁大学耗时5年的研究 ...
- Python 矩阵顺时针,逆时针旋转
Python 矩阵顺时针,逆时针旋转 matrix = [[0,1,2,3],[4,5,6,7],[8,9,10,11]] matrix1 = [list(i)[::-1] for i in reve ...
- 如何判断某个物体当前是顺时针还是逆时针旋转
#region[来自某位道友的求助]Vector3 _scale;int zero = 0;void Awake(){_scale = transform.localEulerAngles;}priv ...
- 旋转角度如何知道是顺时针还是逆时针旋转?(仅供参考,更靠谱的是旋转轴到z轴正半轴上)
a和b向量在x-y平面内 要确定向量的旋转方向(顺时针或逆时针),可以使用右手定则. 在三维空间中,假设您的右手放在绕旋转轴旋转的向量上.如果您的大拇指指向旋转轴的正方向,那么旋转方向是逆时针:如果您 ...
- android旋转的列表,Android利用layer-list实现ProgressBar顺时针及逆时针旋转
布局文件如下 android:layout_width="match_parent" android:layout_height="match_parent" ...
- c++二维矩阵顺时针和逆时针旋转
/** 顺时针旋转* 先从上到下,再交换* 1 2 3 7 8 9 7 4 1* 4 5 6 => 4 5 6 => 8 5 2* 7 8 9 1 2 3 9 6 3 */ void ro ...
- [css] css 3d 动画,跟随鼠标移动做球形旋转
点击在线查看动画效果 代码如下 <!DOCTYPE html> <html lang="en"> <head><meta charset= ...
- 顺时针或逆时针旋转180度等于先作一个水平镜像,再作一个垂直镜像
这个问题最好的说明就是用实际的图片说明,如下图所示:
- Python 矩阵顺时针逆时针旋转90度
前言 Python中对矩阵进行顺时针或者逆时针旋转90度操作 程序 矩阵: matrix = [[1,2,3],[4,5,6],[7,8,9]] matrix 结果: [[1, 2, 3], [4, ...
最新文章
- 在Linux系统里安装Virtual Box的详细步骤
- linux sysctl重启服务,Linux /etc/sysctl.conf重启没有生效
- java的队列_java实现队列
- NYOJ 456 邮票分你一半
- javascript笔记:javascript的前世,至于今生嘛地球人都知道了哈
- Exception in thread main java.lang.UnsupportedClassVersionError的另类解决办法
- 微信小程序中带参数返回上一页的方法总结(三种)
- 如何在 Java 中正确使用 wait, notify 和 notifyAll?
- D. Closest Equals(线段树)
- 2008年卫星地图_黄河入海口1984年-2016年,34年卫星地图变化
- Disease Ontology:人类疾病分类数据库
- 2017计算机驱动用什么好处,驱动精灵和驱动人生哪个好2017
- UDP视频聊天室(一)
- 263企业邮箱imap服务器,263企业邮箱实现IMAP邮箱搬家功能
- elementUI中折叠面板箭头图标位置调整
- 查看连接过的WIFI密码方法汇总
- 基于PHP开发的云平台网络课堂教学学习互动平台设计
- cad lisp 二次抛物线_cad画二次抛物线
- ajaxsubmit success 不执行和ajaxsubmit使用问题
- Mysql慢查询日志的使用 和 Mysql的优化
热门文章
- 夹子机器人/pancakes科学家机器人这种骗局到现在还有人会上当!每天骗取上千万!带大家一同揭秘!!
- 【NOI2007】社交网络
- 数据集:Udacity Self-Driving 目标检测数据集
- 建筑BIM的使用场景
- kal渗透----缓冲区溢出个人笔记
- 无线传感网络的自适应协作数据传输方法
- android工程文件assts,应用程序基础androiddevelopers英文翻译本科论文.docx
- zabbix 监控 php-fpm
- 居安思危——“非常时期”的城市生存
- 游戏设计模式阅读笔记18——优化模式(对象池模式)