Unity 物体在屏幕内跟随鼠标移动

由于是在屏幕内跟随鼠标移动,我们知道,在屏幕上鼠标位置的Z坐标的值为0,所以我们要将物体的位置坐标Z赋值给鼠标的Z;

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 public class Follow: MonoBehaviour {
 5         Vector3 world;//物体要移动到的位置 (世界坐标系)
 6         float moveSpeed=0;//物体移动速度
 7 
 8         void Update(){
 9                 Vector3 targetposition=Camera.main.WorldToScreenPoint(this.transform.position);//将物体的世界坐标转换为屏幕坐标
10                 
11                  Vector3 mouseposition=Input.mousePosition;//鼠标在屏幕上的位置坐标
12 
13                  if(Input.GetMouseButton(0)){
14                          mouseposition.z=targetposition.z;
15                          
16                           //world=Camera.main.ScreenToWorldPoint(mouse position);//这种情况下 会有穿透现象
17 
18                           world.x=Camera.main.ScreenToWorldPoint(mouse position).x;
19                           world.z=Camera.main.ScreenToWorldPoint(mouse position).z;
20                           world.y=this.transform.postion.y;
21 
22                           moveSpeed=3;
23                  }
24 
25                  if(this.transform.position==world){//如果物体移动到了鼠标指定的位置 将移动速度设为0
26                            moveSpeed=0;
27                   }
28 
29                   this.transform.LookAt(world);//物体朝向鼠标对应的位置 (此时的位置为世界坐标系)
30                    this.transform.Translate(Vector3.forward*moveSpeed*Time.deltaTime);
31      }
32 }    

 

posted @ 2014-06-20 15:21  江湖还在,人已不堪  阅读(6097)  评论(1编辑  收藏  举报