unity3d遊戲物體跟著滑鼠方向移動
阿新 • • 發佈:2019-02-18
效果:當點選滑鼠左鍵時,遊戲物件會朝滑鼠點選的方向移動,類似魔獸爭霸一樣。
思路:把滑鼠的座標轉化成世界座標(滑鼠預設是螢幕座標),然後當點選滑鼠時,物體將朝著滑鼠的世界座標方向移動。
如果你看到這的話,最好先別往下看,自己按著這個思路試做一下,實在不行再看看我的哈~~~~
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(有點笨),大家一起學習哈~~~~