【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

♥️作者:白日参商

🤵‍♂️个人主页:白日参商主页

♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!

🎈🎈加油! 加油! 加油! 加油

🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!

项目场景:

例如:项目场景:在unity开发过程中,我们有时候会希望在鼠标按下时开始旋转,通过记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置。


解决方案:

提针对这个需求,以下是示例脚本代码:

csharp 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectRotationWithMouse : MonoBehaviour
{
    public float rotationSpeed = 1.0f;  // 旋转速度
    private Quaternion initialRotation;  // 初始旋转

    private bool isRotating = false;  // 标记是否正在旋转
    private float rotationStartX;  // 旋转起始点的X坐标

    private void Start()
    {
        initialRotation = transform.rotation;  // 记录初始旋转
    }

    private void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            isRotating = true;
            rotationStartX = Input.mousePosition.x;
        }
        else if (Input.GetMouseButtonUp(0))
        {
            isRotating = false;
            transform.rotation = initialRotation;  // 恢复初始旋转
        }

        if (isRotating)
        {
            // 获取鼠标水平移动的值
            float mouseX = Input.mousePosition.x - rotationStartX;

            // 计算旋转角度
            float rotationAmount = mouseX * rotationSpeed * Time.deltaTime;

            // 围绕自身 Y 轴旋转物体
            transform.Rotate(Vector3.up, rotationAmount);

            rotationStartX = Input.mousePosition.x;  // 更新旋转起始点
        }
    }
}

♥️作者:白日参商

🤵‍♂️个人主页:白日参商主页

♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!

🎈🎈加油! 加油! 加油! 加油

🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!

相关推荐
虾球xz10 分钟前
游戏引擎学习第282天:Z轴移动与摄像机运动
c++·学习·游戏引擎
飞起的猪2 小时前
【虚幻引擎】UE5独立游戏开发全流程(商业级架构)
ue5·游戏引擎·游戏开发·虚幻·独立开发·游戏设计·引擎架构
敲代码的 蜡笔小新4 小时前
【行为型之命令模式】游戏开发实战——Unity可撤销系统与高级输入管理的架构秘钥
unity·设计模式·架构·命令模式
.小墨迹9 小时前
Apollo学习——键盘控制速度
linux·开发语言·c++·python·学习·计算机外设
Tech Synapse12 小时前
数字孪生工厂实战指南:基于Unreal Engine/Omniverse的虚实同步系统开发
游戏引擎·linq·虚幻
binggoling13 小时前
实用工具:微软软件PowerToys(完全免费),实现多台电脑共享鼠标和键盘(支持window系统)
microsoft·计算机外设·电脑
驰愿13 小时前
ET EntityRef EntityWeakRef 类分析
unity·et
敲代码的 蜡笔小新21 小时前
【行为型之中介者模式】游戏开发实战——Unity复杂系统协调与通信架构的核心秘诀
unity·设计模式·c#·中介者模式
敲代码的 蜡笔小新1 天前
【行为型之解释器模式】游戏开发实战——Unity动态公式解析与脚本系统的架构奥秘
unity·设计模式·游戏引擎·解释器模式
push_1 天前
罗技无线鼠标的配对方法
计算机外设