[unity3d]如何實現遊戲物件跟隨滑鼠方向移動

weixin_33858249發表於2017-11-15

Unity3D如何實現遊戲物件跟隨滑鼠方向移動。


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


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


  1. var world:Vector3;

  2. var speed:float=0;//物體的移動速度

  3. function Update (){

  4. var screenpos=Camera.main.WorldToScreenPoint(transform.position);//物體的世界座標轉化成螢幕座標

  5. var e:Vector3=Input.mousePosition;//滑鼠的位置

  6. //當點選滑鼠左鍵時

  7. if(Input.GetMouseButton(0)){

  8. e.z=screenpos.z;//1.因為滑鼠的螢幕 Z 座標的預設值是0,所以需要一個z座標

  9. world=Camera.main.ScreenToWorldPoint(e);

  10. speed=1;

  11. }

  12. if(transform.position==world){

  13. speed=0;

  14. }else{

  15. animation.Play("walk");//這是我自身帶的一個預設動畫,你可以把它刪了

  16. }

  17. transform.LookAt(world); //物體朝向滑鼠

  18. transform.Translate(Vector3.forward*speed*Time.deltaTime);

  19. }
複製程式碼


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


就只用把world=Camera.main.ScreenToWorldPoint(e); 改成以下這句就行了。(穿透地面現象是Y軸,所以讓y軸不變,且大小等於遊戲物件的y值。)


  1. world.x=Camera.main.ScreenToWorldPoint(e).x;
  2. world.z=Camera.main.ScreenToWorldPoint(e).z;
  3. world.y=transform.position.y;
複製程式碼















本文轉蓬萊仙羽51CTO部落格,原文連結:http://blog.51cto.com/dingxiaowei/1366222,如需轉載請自行聯絡原作者

相關文章