1. 程式人生 > >unity3d遊戲物體跟著滑鼠方向移動

unity3d遊戲物體跟著滑鼠方向移動

效果:當點選滑鼠左鍵時,遊戲物件會朝滑鼠點選的方向移動,類似魔獸爭霸一樣。

思路:把滑鼠的座標轉化成世界座標(滑鼠預設是螢幕座標),然後當點選滑鼠時,物體將朝著滑鼠的世界座標方向移動。

如果你看到這的話,最好先別往下看,自己按著這個思路試做一下,實在不行再看看我的哈~~~~

var world:Vector3;
var speed:float=0;//物體的移動速度
function Update (){
  var screenpos=Camera.main.WorldToScreenPoint(transform.position);//物體的世界座標轉化成螢幕座標
  var e:Vector3=Input.mousePosition;//滑鼠的位置
  //當點選滑鼠左鍵時
  if(Input.GetMouseButton(0)){
     e.z=screenpos.z;//1.因為滑鼠的螢幕 Z 座標的預設值是0,所以需要一個z座標
     world=Camera.main.ScreenToWorldPoint(e); 
     speed=1;    
  }
  if(transform.position==world){      
     speed=0;
  }else{
     animation.Play("walk");//這是我自身帶的一個預設動畫,你可以把它刪了
  }
  transform.LookAt(world); //物體朝向滑鼠    
  transform.Translate(Vector3.forward*speed*Time.deltaTime);
  
}

當然,上面那個適合垂直平面,即攝像頭垂直x-z平面,但一般遊戲都不會垂直的。如果不垂直的話,用上面方法可能就會出現類似遊戲物件穿透地面的現象,所以我們得改一下程式碼。

就只用把world=Camera.main.ScreenToWorldPoint(e); 改成以下這句就行了

     world.x=Camera.main.ScreenToWorldPoint(e).x; 
     world.z=Camera.main.ScreenToWorldPoint(e).z;
     world.y=transform.position.y;
注:穿透地面現象是Y軸,所以讓y軸不變,且大小等於遊戲物件的y值。


我的QQ:397319689(有點笨),大家一起學習哈~~~~