Vector3 world;//物体要移动到的位置 (世界坐标系)
float moveSpeed = 0;//物体移动速度
void Update()
{
//将物体的世界坐标转换为屏幕坐标
Vector3 targetposition = Camera.main.WorldToScreenPoint(this.transform.position);
//鼠标在屏幕上的位置坐标
Vector3 mouseposition = Input.mousePosition;
if (Input.GetMouseButton(0))
{
mouseposition.z = targetposition.z;
//world=Camera.main.ScreenToWorldPoint(mouseposition);
//这种情况下 会有穿透现象
world.x = Camera.main.ScreenToWorldPoint(mouseposition).x;
world.z = Camera.main.ScreenToWorldPoint(mouseposition).z;
world.y = this.transform.position.y;
moveSpeed = 3;
}
if (this.transform.position == world)
{
//如果物体移动到了鼠标指定的位置 将移动速度设为0
moveSpeed = 0;
}
this.transform.LookAt(world);//物体朝向鼠标对应的位置 (此时的位置为世界坐标系)
this.transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
}
转载于:https://www.cnblogs.com/Study088/p/7298704.html
本文介绍在Unity中实现物体跟随鼠标移动的编程技巧。通过使用Camera.main.WorldToScreenPoint和Camera.main.ScreenToWorldPoint方法,将物体的世界坐标转换为屏幕坐标,并使物体根据鼠标的屏幕位置进行移动。同时,确保物体的移动速度可控,使其能够平滑地移动到目标位置。
1491

被折叠的 条评论
为什么被折叠?



