[unity3d]如何实现游戏对象跟随鼠标方向移动
admin
2023-01-20 19:43:12
0

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;
复制代码

相关内容

热门资讯

失控的监护“外包”:孩子被送特... 从封闭式特训机构出来三个月后,李雨有时仍感觉自己还在里面。她忍不住看相关新闻。她看到报道中,一名21...
一举创下3项世界纪录,中国自主... 【环球时报报道 记者 郭媛丹】21日上午,中船集团旗下中船澄西船舶修造有限公司为力拓集团建造的自主研...
试图把国内矛盾外引?专家解析菲... 【环球时报报道 记者 樊巍】21日上午,外交部边海司负责人就菲律宾在仁爱礁蓄意挑衅、袭击中国海警执法...
特朗普宣布两年后对仿制药征收1... △美国总统特朗普(资料图)当地时间7月21日,美国总统特朗普在社交媒体发文表示,自2026年8月1日...
美国贸易代表暗示将很快出台新关... 新华社纽约7月21日电(记者刘亚南) 美国贸易代表贾米森·格里尔21日在接受媒体采访时暗示,美国联邦...
中国空调“一机难求”,人民日报... 中国空调“一机难求”,创意产品持续热销,本报记者实地探访——消暑降温,欧洲民众为何追捧中国制造?(第...
美防长:对伊朗战争已耗资375... △美国国防部长赫格塞思(资料图)央视记者当地时间21日获悉,美国国防部长赫格塞思表示,美国对伊朗战争...
在全国抗议声中,泽连斯基解除乌... 据乌克兰媒体《基辅独立报》报道,乌克兰总统泽连斯基解除了乌克兰武装部队总司令瑟尔斯基的职务,并任命联...
也门胡塞武装:停靠沙特港口船只... 新华社科威特城7月21日电(记者尹炣)萨那消息:也门胡塞武装20日警告国际航运公司称,与沙特港口开展...
特朗普:胡塞武装若封锁红海,美... 新华社华盛顿7月21日电(记者黄强 徐剑梅)美国总统特朗普21日在白宫会见到访的黎巴嫩总统奥恩时表示...