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值减去原始坐标后的绝对值等于方块的边长时以即时坐标为中心显示方块再把这个即时坐标作为原始坐标进行下一步判断。
参考技术Aunity中怎么让物体随着鼠标移动?
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中怎么让物体随着鼠标移动?的主要内容,如果未能解决你的问题,请参考以下文章
unity3d中,怎样让鼠标点击一个物体后,摄像机就去拍摄这个物体?