【Unity3D鼠标交互】(一)鼠标拖拽物体实现任意角度自旋转
【摘要】 推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 Unity3d鼠标拖拽物体实现任意角度自旋转 主要涉及函数Input.GetAxis("Mouse X");//可取得鼠标横向(x轴)移动增量Input.GetAxis("Mouse Y");//可取得鼠标竖向(y轴)移动增量 效果图 代码分享using UnityEngine;p...
推荐阅读
Unity3d鼠标拖拽物体实现任意角度自旋转
主要涉及函数
Input.GetAxis("Mouse X");//可取得鼠标横向(x轴)移动增量
Input.GetAxis("Mouse Y");//可取得鼠标竖向(y轴)移动增量
效果图
代码分享
using UnityEngine;
public class startRoate : MonoBehaviour
{
private bool onDrag = false; //是否被拖拽
public float speed = 6f; //旋转速度
private float tempSpeed; //阻尼速度
private float axisX = 1; //鼠标沿水平方向移动的增量
private float axisY = 1; //鼠标沿竖直方向移动的增量
private float cXY;
void OnMouseDown()
{
//接受鼠标按下的事件//
axisX = 0f; axisY = 0f;
}
void OnMouseDrag() //鼠标拖拽时的操作//
{
onDrag = true;
axisX = -Input.GetAxis("Mouse X");
//获得鼠标增量
axisY = Input.GetAxis("Mouse Y");
cXY = Mathf.Sqrt(axisX * axisX + axisY * axisY); //计算鼠标移动的长度//
if (cXY == 0f) { cXY = 1f; }
}
//计算阻尼速度
float Rigid()
{
if (onDrag)
{
tempSpeed = speed;
}
else
{
if (tempSpeed > 0)
{
//通过除以鼠标移动长度实现拖拽越长速度减缓越慢
tempSpeed -= speed * 2 * Time.deltaTime / cXY;
}
else
{
tempSpeed = 0;
}
}
return tempSpeed;
}
void Update()
{
//这个是是按照之前方向一直慢速旋转
this.transform.Rotate(new Vector3(axisY, axisX, 0) * Rigid(), Space.World);
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)