91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[unity3d]如何實現游戲對象跟隨鼠標方向移動

發布時間:2020-02-23 01:25:14 來源:網絡 閱讀:589 作者:蓬萊仙羽 欄目:游戲開發

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;
復制代碼

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁东县| 乐陵市| 襄樊市| 吴堡县| 墨竹工卡县| 监利县| 衡阳县| 安泽县| 荣昌县| 开封市| 申扎县| 汉川市| 巧家县| 大埔区| 虎林市| 胶南市| 远安县| 阳谷县| 连平县| 揭阳市| 贵港市| 娄底市| 宜章县| 镇江市| 育儿| 读书| 大竹县| 八宿县| 枣阳市| 土默特左旗| 河曲县| 贵阳市| 泸溪县| 竹北市| 襄城县| 上虞市| 县级市| 沂水县| 育儿| 集安市| 波密县|