在unity3d中如何制作鼠标点击一个物体,然后传送到我想要的坐标上,也就是点击按钮,传送到目的地。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在unity3d中如何制作鼠标点击一个物体,然后传送到我想要的坐标上,也就是点击按钮,传送到目的地。相关的知识,希望对你有一定的参考价值。

void Update ()
if(Input.GetMouseButtonDown(0))

RayControl();

if(flagMove)

if(Vector3.Distance(transform.position,mousePos)>1)

transform.Translate(transform.worldToLocalMatrix* transform.forward * Time.deltaTime*5);//transform.forward是世界坐标,通过transform.worldToLocalMatrix转换矩阵转到本地坐标然后在本地坐标运动,没有必要必须在本地坐标系运动 但是必须注意要统一起来。


else

flagMove=false;



void RayControl()

Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);//向屏幕发射一条射线
if(Physics.Raycast(ray,out hit,200))射线长度为200 和地面的碰撞盒做检测


GameObject targetPos=GameObject.CreatePrimitive(PrimitiveType.Sphere);//实例化一个Sphere
targetPos.transform.localScale=new Vector3(0.5f,0.5f,0.5f);
mousePos=hit.point;//获取碰撞点坐标
mousePos.y=transform.position.y;
targetPos.transform.position=mousePos;//Sphere放到鼠标点击的地方
targetDir=mousePos-transform.position;//计算出朝向
Vector3 tempDir=Vector3.Cross(transform.forward,targetDir.normalized);//用叉乘判断两个向量是否同方向

float dotValue=Vector3.Dot(transform.forward,targetDir.normalized);//点乘计算两个向量的夹角,及角色和目标点的夹角
float angle=Mathf.Acos(dotValue)*Mathf.Rad2Deg;if(tempDir.y<0)//这块 说明两个向量方向相反,这个判断用来确定假如两个之间夹角30度 到底是顺时 还是逆时针旋转。

angle=angle*(-1);

print(tempDir.y);
print("2:"+angle);
transform.RotateAround(transform.position,Vector3.up,angle);
flagMove=true;

参考技术A 1.物体要有Collider
2.编写脚本,加入OnMouseEnter()事件,看看手册怎么用,然后在该事件写
if(Input.GetMouseButtonDown(0))
//传送到目标点追问

能详细点说不????

追答

10分悬赏分,能有多详细?我思路给你讲了,难道编程的细节也要写出来?你要拿100分,我从头到尾给你写一个脚本,拖上去就可以用。如何?

本回答被提问者和网友采纳

35three.js鼠标控制物体旋转缩放

参考技术A three.js包含了很多相机控制器,通过旋转相机可以达到同样的旋转效果。
但是当我们需要固定场景背景,固定固定摄像机的时候。我们只能去移动物体了。Three.js提供了
TransformControls.js控件,它可以控制物体的旋转、缩放、平移,但是使用起来并不方便。
这个时候就需要自己动手写控制器了。
原理很简单:获取鼠标(手势)点击的位置,以及鼠标拖动的距离。
把移动的方向和距离作为参数传递给物体。然后在循环中改变物体的属性来控制物体。
将要转动的物体放在一个组中,改变该组就可以。

这里获取的是X轴方向的鼠标移动的值。然后绕Y轴旋转。也可以添加其他的方向的旋转事件。
也可以添加一个功能,点击立方体之上才有效果。再说吧。

以上是关于在unity3d中如何制作鼠标点击一个物体,然后传送到我想要的坐标上,也就是点击按钮,传送到目的地。的主要内容,如果未能解决你的问题,请参考以下文章

unity3d鼠标点击地图自动寻路,如何让点击场景和小地图都能自动寻路。

UNITY3d实现鼠标点击物体播放声音的效果

unity3d 2D平面游戏实现鼠标拖拽物体移动

Unity3d C# 鼠标点击下物体,物体匀速旋转180°,要看到旋转过程,这个代码怎么写?

你好,请问在UNITY3D中如何实现用鼠标左键拖拽控制一个组合物体的旋转啊?

unity3D 鼠标点击拖动画线