由於是在屏幕內跟隨鼠標移動,我們知道,在屏幕上鼠標位置的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 }
