当前位置: 首页 > news >正文

Unity 鼠标实现对物体的移动、缩放、旋转

文章目录

  • 1. 代码
  • 2. 测试场景

1. 代码

using UnityEngine;public class ObjectManipulation : MonoBehaviour
{// 缩放比例限制public float MinScale = 0.2f;public float MaxScale = 3.0f;// 缩放速率private float scaleRate = 1f;// 新尺寸private float newScale;// 射线private Ray ray;private RaycastHit hitInfo;private bool isDragging = false;private Vector3 offset;// 旋转private float rotationSpeed = 5.0f;private void OnMouseDown(){isDragging = true;offset = gameObject.transform.position - GetMouseWorldPosition();}private void OnMouseUp(){isDragging = false;}private void Update(){// 拖拽if (isDragging){Vector3 newPosition = GetMouseWorldPosition() + offset;transform.position = newPosition;}// 旋转if (Input.GetMouseButton(1)){float mousX = Input.GetAxis("Mouse X");float mousY = Input.GetAxis("Mouse Y");transform.Rotate(mousY * rotationSpeed, -mousX * rotationSpeed, 0, Space.World);}// 缩放ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out hitInfo)){if (Input.GetAxis("Mouse ScrollWheel") != 0){newScale = transform.localScale.x + Input.GetAxis("Mouse ScrollWheel") * scaleRate;newScale = Mathf.Clamp(newScale, MinScale, MaxScale);transform.localScale = new Vector3(newScale, newScale, newScale);}}}private Vector3 GetMouseWorldPosition(){Vector3 mousePos = Input.mousePosition;mousePos.z = -Camera.main.transform.position.z;return Camera.main.ScreenToWorldPoint(mousePos);}
}

2. 测试场景

在这里插入图片描述

http://www.lryc.cn/news/124076.html

相关文章:

  • 67Class 的基本语法
  • 企业数字化转型:无形资产占比测算(2007-2021年)
  • [centos]设置主机名
  • 华为OD真题--新学习选址--带答案
  • Qt自定义对话框
  • Python 程序设计入门(018)—— format() 函数的用法详解
  • 演进式架构
  • OCP China Day 2023:五大社区齐聚,加速开源开放创新与落地
  • 【Linux】进程间通信之管道
  • 记录一个正则表达式
  • 用于全局复根和极点查找算法的自适应网格生成器(Matlab代码实现)
  • 修改Linux中SSH的端口
  • Ansible从入门到精通【六】
  • 国企的大数据岗位方向的分析
  • 【MySQL--->数据类型】
  • Ceph部署
  • 打工日记-Vue3+Ts二次封装el-table
  • funbox3靶场渗透笔记
  • springcloud3 hystrix实现服务降级,熔断,限流以及案例配置
  • ComponentOne Studio ASP.NET MVC Crack
  • OPENCV C++(十一)
  • ES使用心得
  • Stable Diffusion - 幻想 (Fantasy) 风格与糖果世界 (Candy Land) 人物提示词配置
  • 部署K8S集群
  • 在时间和频率域中准确地测量太阳黑子活动及使用信号处理工具箱(TM)生成广泛的波形,如正弦波、方波等研究(Matlab代码实现)
  • 一百五十四、Kettle——Linux上安装Kettle9.3(踩坑,亲测有效,附截图)
  • PackageNotFoundError: No package metadata was found for bitsandbytes解决方案
  • uni-app和springboot完成前端后端对称加密解密流程
  • 【Unity造轮子】制作一个简单的2d抓勾效果(类似蜘蛛侠的技能)
  • Unity 人物连招(三段连击)