♥️作者:白日参商
🤵♂️个人主页:白日参商主页
♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!
🎈🎈加油! 加油! 加油! 加油
🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!
项目场景:
例如:项目场景:在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; // 更新旋转起始点
}
}
}
♥️作者:白日参商
🤵♂️个人主页:白日参商主页
♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!
🎈🎈加油! 加油! 加油! 加油
🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+!