unity中怎么让物体随着鼠标移动?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中怎么让物体随着鼠标移动?相关的知识,希望对你有一定的参考价值。

unity让物体随着鼠标移动的方法:

transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, Camera.main.farClipPlane));

拓展:

在unity3d中用鼠标移动物体控制每步移动的距离的相关理解步骤:

1、如果你的方块是存在的多个cube,那么将模型跟随鼠标,模型上用射线,射线碰到的方块改变。

2、画多个cube,整齐排列,编名,去掉meshrender属性(不渲染),相当于画网格,比较好理解。

3、用二维数组来判断范围,简单的做法是电脑获得模型的原始坐标(比如模型的中心点),鼠标即时坐标的x值和y值减去原始坐标后的绝对值等于方块的边长时以即时坐标为中心显示方块再把这个即时坐标作为原始坐标进行下一步判断。

参考技术A

unity中怎么让物体随着鼠标移动?

transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, Camera.main.farClipPlane));

Unity让物体跟随鼠标移动

前言

最近在学习Unity,记录下学习的成果吧。本文最终结果是要实现一个小飞机跟随鼠标移动的效果。看下图片。

向量

在Unity中,每个对象都有自己的位置属性,组件叫做Transform,通过Transform可以获取对象的位置属性。在上面的实例中,我们需要获取到鼠标的8实时位置和小飞机的实时位置,接着计算出小飞机到鼠标位置的向量。

那么什么是向量,简单来说,向量就是有大小和方向的量,一般用箭头表示,箭头的方向就是表示向量的方向,箭头的长度就是表示向量的大小。

向量的运算

这里就简单介绍下向量的加法和减法。非常简单,直接拿对应的坐标相减/加即可。
比如有一个坐标a(3,2),坐标b(0,2),求a+b = (3,4),表示到图上就是。

向量的减法也同理,直接相应的坐标相减即可。

向量夹角计算

比如有两个坐标,a(2,2) b(-2,2),如下图所实施。如何计算这两个向量的夹角呢。

在Unity中我们可以用SignedAngle方法来计算两个向量的夹角。

 //计算向量夹角
 var angle = Vector3.SignedAngle(face, direction,Vector3.forward);

物体旋转

在2D的项目中,我们要控制物体的旋转,一般是直接调用Rotate方法来控制Z轴的数值就好。

  this.transform.Rotate(0, 0, angle);

其中angle就是旋转角度。angle为正表示逆时针旋转,为负表示顺时针旋转。

物体移动

在2D图形中,想让物体往前移动,我们可以调用Translate方法,修改其Y轴坐标即可。然后坐标表示已自己为中心。

transform.Translate(0, 0.02f, 0, Space.Self);

完整代码

结合上面的一些实例,我们差不多可以做出这样的效果了,当然还需要获取鼠标的坐标。

//表示鼠标的屏幕坐标
var mousePosition = Input.mousePosition
//转成世界坐标
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

完整代码如下

  	void Start()
    
        Application.targetFrameRate = 50;
    
    void Update()
    
        var face = this.transform.up;
        //获取鼠标位置
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mousePosition.z=0;
        //获取小飞机位置
        Vector3 screenPosition = transform.position;
        //计算向量
        var direction = mousePosition - screenPosition;
        //计算向量夹角
        var angle = Vector3.SignedAngle(face, direction, Vector3.forward);
        this.transform.Rotate(0, 0, angle);
        //小飞机移动
        transform.Translate(0, 0.02f, 0, Space.Self);
    

best wishes from Dragon Boat Festival

以上是关于unity中怎么让物体随着鼠标移动?的主要内容,如果未能解决你的问题,请参考以下文章

Unity让物体跟随鼠标移动

Unity让物体跟随鼠标移动

unity中鼠标点击触发物体运动

unity3d中,怎样让鼠标点击一个物体后,摄像机就去拍摄这个物体?

unity中让物体移动到鼠标点击位置(单击移动和双击暂停移动)

unity摄像头怎么随着游戏对象移动