unity3d鼠标控制物体 移动 旋转 缩放

2023-05-16

需求:制作一个鼠标中键移动缩放和鼠标右键旋转的功能(鼠标右键旋转可以自行改成鼠标左键旋转)

效果图:

1.新建一个名为Target的立方体cube

2.新建一个材质球 Yellow颜色的并挂载到Target立方体上

 

3.新建一个脚本 MatrixAction.cs

4.MatrixAction.cs代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MatrixAction : MonoBehaviour
{
    [Header("操作对象")]
    /// <summary>
    /// 操作对象
    /// </summary>
    public Transform m_target;
    void Start()
    {
        isDown1 = false;
        isDown2 = false;
    }
    /// <summary>
    /// 右键是否按下 
    /// </summary>
    private bool isDown1;

    /// <summary>
    /// 中键是否按下
    /// </summary>
    private bool isDown2;
    void Update()
    {
        // 按下了鼠标中键
        if (Input.GetMouseButtonDown(1))
            isDown1 = true;
        // 抬起了鼠标中键
        if (Input.GetMouseButtonUp(1))
            isDown1 = false;
        // 按下鼠标右键
        if (Input.GetMouseButtonDown(2))
            isDown2 = true;
        // 抬起了鼠标右键
        if (Input.GetMouseButtonUp(2))
            isDown2 = false;
        // 缩放 Input.mouseScrollDelta.y
        m_target.localScale += Time.deltaTime * m_target.localScale * Input.mouseScrollDelta.y;
    }
    private void LateUpdate()
    {
        if (isDown1)
        {
            // 计算单位时间内鼠标的偏移量
            float x = Input.GetAxis("Mouse X");
            float y = Input.GetAxis("Mouse Y");
            Vector3 rot = new Vector3(y, -x, 0);
            float spd = 10; //速度
            m_target.Rotate(spd * rot, Space.World);
        }
        if (isDown2)
        {
            // 计算单位时间内鼠标的偏移量
            float x = Input.GetAxis("Mouse X");
            float y = Input.GetAxis("Mouse Y");
            float spd = 0.4f;   //速度
            m_target.Translate(spd * new Vector3(x, y), Space.World);
        }
    }
}

5.新建一个Script空物体并将脚本MatrixAction.cs挂载上去,然后将Target拖拽到脚本上

6.为了Hierarchy层次更加清晰,新建几个空物体分隔各个组件 (可忽略)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity3d鼠标控制物体 移动 旋转 缩放 的相关文章

  • Unity集成Leap Motion

    转载自 http www cocoachina com game 20150716 12625 html 演示视频文章最后 如果你已经熟悉编程的概念 理解并在C 语言方面有一定的经验 并且对面向对象编程思想和设计概念有所熟悉 如果你了解3D
  • unity如何解决每次写完敲代码,调试时需要卡个进度条

    解决办法如下 勾选上之后程序就可以立刻运行起来了 再也不用一直卡进度条了 不过也有弊端的 会影响静态字段初始化有问题还有Dotween的一些效果会发生变化 谨慎避免入坑
  • Animator之RootMotion

    Unity3D 中 Generic 动画导入设置和 Root Motion 之间的关系 Unity3D 的 Mecanim 动画系统可以直接复用 3DS MAX 中制作的动画文件中的位移 这个就是通过 applyRootMotion 来达成
  • URP——后期处理特效

    通用渲染管道 URP 包括一个后处理效果的集成实现 如果使用URP 则不需要为后期处理效果安装额外的包 URP与Post Processing Stack v2包不兼容 URP使用体积框架进行后期处理效果 下面的图片显示了一个URP场景有没
  • Unity3D中通过代码修改子物体层级的顺序

    今天有个同事问我如何在程序中修改子物体的层级关系来改变遮挡关系 我给他敲出来一句代码 UI的层级关系是通过渲染表现出来的 在canvas下的物体 排序越靠前的越先被渲染 这样一来就会 被后来渲染的遮挡 总结一下有三句代码是修改子物体的层级的
  • Unity_场景之间的跳转

    跳转场景之前 需要在 File gt Build Settings gt Add Open Scenes 或者 直接把 场景 拖拽进来 跳转场景方法1 已过时 跳转场景方法 public void OnStartGame string Sc
  • 也想做一个绝地求生版的汽车控制移动,进来瞧瞧?(干货满满)

    控制车子移动 效果图附上 1 首先4个车轮复制一遍为车轮2备用 2 给车轮2全部添加wheel collider 只剩下车轮碰撞器和transform组件 3 给原版4个车轮添加脚本wheel 变量共有 面板赋值 依次添加车轮2里面的车轮c
  • Unity笔记:修改代码执行的默认打开方式

    使用 External Tools 偏好设置可设置用于编写脚本 处理图像和进行源代码控制的外部应用程序 External Script Editor 选择 Unity 应使用哪个应用程序来打开脚本文件 Unity 会自动将正确的参数传递给内
  • Unity3D【脚本】 按键盘Esc弹出退出面板 确定退出游戏 取消关闭面板

    按键盘Esc弹出退出面板 确定退出游戏 取消关闭面板 效果图 脚本 using UnityEngine using System Collections public class Exit MonoBehaviour public Game
  • RAIN{INDIE} 自动寻路

    Unity游戏中有较多的自动寻路插件 看过几个 大同小异 而RAIN中的Behavior Tree感觉很好 听名字就知道很条理 下面 就用它做个简单的寻路小例子 首先 导入RAIN的包 结构如下 在使用的过程当中还会产生几个文件夹用来存放E
  • Unity使用Newtonsoft报错的解决方案

    文章目录 Unity 使用 Newtonsoft 报错的解决方案 问题描述 解决方法 方法一 使用 Unity 的 Package Manager 自动导入 方法二 访问 GitHub 下载 unitypackage 文件手动导入 Unit
  • unity 读取和写入Excel中文出现乱码解决方法

    在编辑器中读取和写入中文一切正常 发布出来只要是中文就会出现乱码 解决方法 将C Program Files Unity Editor Data Mono lib mono unity 目录下的I18N dll和I18N CJK dll复制
  • unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新

    unity3d 理解刚体 Rigidbody 和碰撞体 Collider 以及触发器 Is Trigger 边学边更新 分类 Unity3D 2014 04 01 16 50 2755人阅读 评论 2 收藏 举报 刚体 Rigidbody
  • unity粒子特效附上贴图后播放动画

    转自 http jingyan baidu com article f96699bbb1a0d6894f3c1b77 html 参考 http www unitymanual com thread 2993 1 1 html dsign a
  • Input.GetAxis _ Unity3d

    Input GetAxis 获取轴 static function GetAxis axisName string float Description描述 Returns the value of the virtual axis iden
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • [3dsMax]2018版下拉菜单项的子菜单无法选中

    软件自身问题 安装更新补丁即可解决 不想更新补丁也可以使用键盘的方向键进行选中 补丁百度云链接 https pan baidu com s 1LDxRFwQnR0GSONuz7wcEfA 提取码 6gpk
  • Unity3D:按键生成物件,Instantia…

    在按下按键之后 可以在画面中生成之前定义好了的物体 这里使用了Instantiate函数来生成 1 先在游戏中定一个空物件GameObject 创建空物件快捷键 ctrl shift n 2 在视图中放置 3 编写脚本 脚本 SpaceCh
  • Unity3d获得android和ios设备的唯一标识

    android为mac地址 ios为advertisingIdentifier 函数都比较简单 网上也搜得到 我也就不多说了 主要是对于我们没做过安卓和IOS开发的人来说 整合进工程有各种的问题 我也就直接上网盘了点击打开链接 代码包里看得
  • Unity3d + NGUI 的多分辨率适配

    移动端的多机型适配 现在要介绍的是 锁链战记 这款游戏的适配方法 这种适配方法是UI是一个基础尺寸 背景是一个基础尺寸 背景比UI多出的部分是一些没有实际作用的部分 这样的适配方式避免了在iPhone5这样的小屏幕上镶边 首先设定UIRoo

随机推荐

  • 图解快速区别——串口、COM口、UART、TTL、RS-232、RS-485

    参考 xff1a 串口 COM口 UART口 TTL RS 232 RS 485区别详解 作者 xff1a flyingju 发布时间 xff1a 2017 09 16 10 30 31 网址 xff1a https blog csdn n
  • P900数传端口定义

    P900数传端口引脚
  • P900数传配置教程

    typec线连接后按住SB2不松手后按住SB1 xff0c 分别松开SB2 SB1 xff0c 点击XCTU软件 http www pc6 com softview SoftView 602005 html 大写的 AT amp F7 设置
  • ubuntu查看软件安装路径

    ubuntu怎么查看软件安装位置在哪 服务器 亿速云 1 执行程序查看 在终端使用type执行软件程序查看 type google chrome 2 通过进程查看对应的软件程序 在终端使用以下命令查看所有进程名 ps e 再使用以下过滤命令
  • Ubuntu中wine程序安装windows软件中文乱码问题

    Ubuntu中wine程序安装windows软件中文乱码如何解决 1 安装wine sudo apt install wine 2 安装中文程序方法 下载exe文件在命令行执行 wine 文件名 exe 3 中文乱码原因分析 查看 home
  • ubuntu通过Trickle,wondershaper限制网速(上传下载速度)

    原文连接 xff1a https www ngui cc 51cto show 727932 html action 61 onClick 在Linux下没有Windows使用360那样去限制某个软件的速度 但是通过Trickle可以设置某
  • Ubuntu 16.04 重置密码(忘记密码)

    Ubuntu 16 04 重置密码 xff08 忘记密码 xff09 http blog topspeedsnail com archives 6042 忘记了你的Ubuntu用户密码 xff0c 登录不了系统 xff1b 不要紧 xff0
  • ubuntu下socket通信

    第一部分为C 43 43 实现 xff0c 第二部分为python实现 第一部分 该socket 的功能是在客户端输入了两个浮点数组成的字符串 xff0c 在服务端接受后将其转换为浮点数输出 xff0c 统一时刻只能有一个客户端连接 服务端
  • 关于螺旋桨的计算

    关于螺旋桨的计算 转载 http blog sina com cn s blog 4c2264b80100086z html 发给大家一些关与螺旋桨的计算公式 2007 02 07 13 08 46 功率 xff08 W xff09 直径
  • PID参数整定快速入门(调节器参数整定方法)

    转载地址 http yunrun com cn tech 440 html PID 参数整定方法很多 xff0c 常见的工程整定方法有临界比例度法 衰减曲线法和经验法 云南昌晖仪表制造有限公司以图文形式介绍以临界比例度法和衰减曲线法整定调节
  • STM8 CAN总线的IdMask模式的讲解

    http www stmcu org article id 328212 STM8 CAN总线的IdMask模式的讲解 发布时间 xff1a 2016 08 27 来源 xff1a ST社区 标签 xff1a STM8 CAN总线 IdMa
  • gitlab使用http方式提交代码不输入密码

    gitlab使用http方式提交代码不输入密码 记得这个问题很久之前就折腾过 xff0c 今天从gitlab上克隆一个仓库 xff0c 第一时间肯定是想着使用ssh公私钥进行验证 xff0c 这样以后也不需要再输入密码 xff0c 可是公司
  • STM32运行时程序卡在B.处

    STM32运行时程序卡在B 处的问题处理的一天多 xff0c 终于找到原因 1 xff0c 表现 我所使用的芯片是stm32f427vit6 xff0c stm32f4系列芯片外设多数都相同 xff0c 407 xff0c 405的 用户也
  • Keil 查看文件路径的方法

    目录 方法一 xff1a 方法二 xff1a 方法一 xff1a 在工程种选择任意一个文件 xff0c 然后点击右键 xff0c 选择 34 Option for File 34 就可以看到这个文件的路径了 方法二 xff1a 在文件框种右
  • Linux下CMake简明教程

    CMake是开源 跨平台的构建工具 xff0c 可以让我们通过编写简单的配置文件去生成本地的Makefile xff0c 这个配置文件是独立于运行平台和编译器的 xff0c 这样就不用亲自去编写Makefile了 xff0c 而且配置文件可
  • unity3d TextMeshPro使用中文字体(秒懂)

    1 打开C Windows Fonts 目录选择中文字体 2 将选中的字体拖拽到Unity编辑器中 3 将已下这段文字保存至zh cn txt文件 注意编码格式为Unicode xff0c 不然会出现乱码 并且拖入Unity编辑器 的一是了
  • Windows下cmd命令行远程传输sftp命令

    sftp 用户名 64 ip地址
  • laravel 500 Server Error,完美解决

    在安装laravel项目后 xff0c 首次打开laravel出现 解决方案 xff1a 1 打开配置文件 laravel config app php 3 找到 39 debug 39 项 设置为 true 4 刷新网页 抛出运行异常 x
  • ubuntu下C++两种方法解析json

    第一种 用jsoncpp xff0c 不过本人目前不知道如何在clion里面使用 xff0c 只知道在命令行g 43 43 使用 xff0c 哪位知道如何在clion里使用可以告诉我 xff0c 谢谢 如下步骤本人操作过两边 xff0c 所
  • unity3d鼠标控制物体 移动 旋转 缩放

    需求 xff1a 制作一个鼠标中键移动缩放和鼠标右键旋转的功能 xff08 鼠标右键旋转可以自行改成鼠标左键旋转 xff09 效果图 xff1a 1 新建一个名为Target的立方体cube 2 新建一个材质球 Yellow颜色的并挂载到T