`
380071587
  • 浏览: 445736 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

unity3d在android的场景中选择一个物体让他旋转平移

 
阅读更多

我今天才知道OnMouse***()系列函数在手机上不能用,因为手机没有鼠标,所以只能用touch,后来有人想实现在场景中选中任一一个物体让他旋转平移,我试着做了一下,用到Raycast类,大家去看看api吧,呵呵~~~

不足之处:我本来想旋转和平移都用一个手指来表示的,但是没办法,因为旋转和平移都用到了TouchPhase.Moved,所以我最后就用Input.touchCount来区别旋转和平移了。如果那位大侠有更好的办法,还请多指点啊~~~~我的QQ:397319689(有点笨)

代码如下:

function Update (){    
	   var ray = Camera.main.ScreenPointToRay (Input.GetTouch(0).position);
	   var hit:RaycastHit;
	   if(Physics.Raycast(ray,hit)){	     	  
	     if(Input.GetTouch(0).phase==TouchPhase.Moved){
	         //一个手指控制平移
	       if(Input.touchCount==1){	           
	         hit.collider.transform.position.x=hit.point.x;
	         hit.collider.transform.position.y=hit.point.y;
	       }else{  
	         //多个手指控制旋转	    
	         hit.collider.transform.RotateAround(hit.collider.transform.position,Vector3.up,-Input.GetAxis("Mouse X"));
	         hit.collider.transform.RotateAround(hit.collider.transform.position,-Vector3.right,-Input.GetAxis("Mouse Y"));
	       } 
	     }
	   }
	
	  if(Input.GetKey(KeyCode.Escape)){
         Application.Quit();
      }  
   }

里面有些不足之处,请多多包涵~~~~


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics