unity3d游戏物体跟着⿏标⽅向移动
效果:当点击⿏标左键时,游戏对象会朝⿏标点击的⽅向移动,类似魔兽争霸⼀样。
思路:把⿏标的坐标转化成世界坐标(⿏标默认是屏幕坐标),然后当点击⿏标时,物体将朝着⿏标的世界坐标⽅向移动。
如果你看到这的话,最好先别往下看,⾃⼰按着这个思路试做⼀下,实在不⾏再看看我的哈~~~~
1.  var world:Vector3;
2. var speed:float=0;//物体的移动速度
3. function Update (){
4.  var screenpos=Camera.main.WorldToScreenPoint(transform.position);//物体的世界坐标转化成屏幕坐标
5.  var e:usePosition;//⿏标的位置
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); //物体朝向⿏标
unity3d animation
18.  transform.Translate(Vector3.forward*speed*Time.deltaTime);
19.
20. }
当然,上⾯那个适合垂直平⾯,即摄像头垂直x-z平⾯,但⼀般游戏都不会垂直的。如果不垂直的话,⽤上⾯⽅法可能就会出现类似游戏对象穿透地⾯的现象,所以我们得改⼀下代码。
就只⽤把world=Camera.main.ScreenToWorldPoint(e); 改成以下这句就⾏了
1. world.x=Camera.main.ScreenToWorldPoint(e).x;
2. world.z=Camera.main.ScreenToWorldPoint(e).z;
3. world.y=transform.position.y;
注:穿透地⾯现象是Y轴,所以让y轴不变,且⼤⼩等于游戏对象的y值。