首页 > 其他分享 >Unity_物体对象跟随鼠标移动360°旋转

Unity_物体对象跟随鼠标移动360°旋转

时间:2024-01-29 15:33:33浏览次数:33  
标签:鼠标 Unity newMousePoint delta Input 360 lastMousePoint

    /// <summary>
    /// 对象旋转跟随鼠标移动
    /// </summary>
    public void ObjectRotateFollowMouseMove()
    {
        if(Input.GetMouseButtonDown(0))
        {
            lastMousePoint = Input.mousePosition;
        }
        else if(Input.GetMouseButton(0))
        {
            var newMousePoint = Input.mousePosition;
            var delta = lastMousePoint - newMousePoint;
            lastMousePoint = newMousePoint;
            Quaternion rotate = Quaternion.Euler(-delta.y * speed, delta.x * speed, 0);
            //TODO:可扩展
            transform.rotation = rotate * transform.rotation; //四元素相乘是角的累积
        }

    }

 

标签:鼠标,Unity,newMousePoint,delta,Input,360,lastMousePoint
From: https://www.cnblogs.com/Roz-001/p/17994628

相关文章

  • Unity-GC优化相关笔记
    Unity官网GC定义如下创建对象、字符串或数组时,用于存储它的内存是从称为堆的中央池分配的。当此项不再使用时,其先前占用的内存可被回收并用于其他目的。在过去,通常由程序员通过适当的函数调用显式地分配和释放这些堆内存块。如今,Unity的Mono引擎等运行时系统会自动为您管理内......
  • 鼠标拖放操作
    开始拖放,源privatevoidmoGridView_MouseDown(objectsender,MouseEventArgse){//点击鼠标左键时,记录点击信息if(Control.ModifierKeys!=Keys.None)return;m_GridHitInfo=null;GridHitInfohitInfo=moGridView.Cal......
  • 最新Unity DOTS Instancing合批:如何针对单个渲染实体修改材质参数
    最近在做DOTS的教程,由于DOTS(版本1.0.16)目前不支持角色的骨骼动画,我们是将角色的所有动画数据Baker到一个纹理里面,通过修改材质中的参数AnimBegin,AnimEnd来决定动画播放的起点和终点,材质参数AnimTime记录当前过去的动画时间。但是在做大规模战斗控制的时候,有10000+的小兵在战斗......
  • Unity架构师进阶:红点系统的架构与设计
    面试的时候经常被问道如何来设计一个红点系统,本文将详细地介绍如何设计一个红点系统,有哪些接口,并完整地给出实现。红点系统的需求分析首先我们来分析一下红点系统的设计需求:红点系统严格意义上来说不属于框架,而是游戏逻辑,所以代码不要放到通用的框架里面,并不属于基础服务。它......
  • Unity面试题:热更新篇(一)
    请简要介绍Unity热更新的原理和实现方式。答:Unity热更新的原理是通过将游戏的资源和代码分离,将代码部分放置在服务器端,游戏启动时通过网络下载更新的代码并动态加载,以达到实现热更新的目的。实现方式包括AssetBundle、ILRuntime等。对啦!这里有个游戏开发交流小组里面聚集了一帮热......
  • Unity塔防游戏的制作与实现
    一、游戏场景的搭建首先,我们需要创建一个新的Unity场景,并将场景设置为2D模式。然后,我们需要导入一些必要的素材,如地图、塔、怪物、子弹等。我们可以从UnityAssetStore中下载这些素材,或者自己制作。接下来,我们需要将地图和塔防元素放置在场景中。我们可以使用Unity的2DTilemap......
  • WPF,ListView鼠标上下滚动方式修改
    问题:ListView在鼠标上下滚动的时候,是按照一个一个Item的高度来滚动的,有办法取消掉这样子的滚动方式吗解决方式:可以通过将ListView的ScrollViewer.CanContentScroll属性设置为False来取消掉逐个项滚动的方式。这将会启用平滑滚动,而不是基于项的高度进行滚动示例代码如下:<......
  • Unity 实现一个FPS游戏的全过程
    Unity是一款功能强大的游戏引擎,它提供了各种各样的工具和功能,以帮助开发者轻松地创建精美的3D游戏和应用程序。在本文中,我们将使用Unity实现一个FPS游戏的全过程,从场景设计、角色控制、敌人AI到最终的打包发布。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础......
  • Unity 的行为决策树的技术原理
    Unity的行为决策树是一种强大的工具,用于创建复杂的游戏人工智能(AI)。行为决策树是一种图形化的编程工具,它可以将游戏角色的行为和决策过程可视化,从而使开发人员更容易理解和调试游戏AI。在本文中,我们将详细讲解Unity的行为决策树的技术原理,并给出相应的代码实现。对啦!这里有个游戏......
  • unity打造基于增量断点更新的下载框架与代码实现
    Unity是目前最流行的游戏引擎之一,它可以用来制作各种类型的游戏,例如2D和3D游戏。在游戏开发过程中,我们通常需要使用一些下载框架来帮助我们管理和更新游戏资源。其中,增量断点更新是一种非常重要的技术,它可以大大减少游戏下载和更新的时间和流量。对啦!这里有个游戏开发交流小组里......