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


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

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

代码如下:

  1. function Update (){      
  2.        var ray = Camera.main.ScreenPointToRay (Input.GetTouch(0).position);  
  3.        var hit:RaycastHit;  
  4.        if(Physics.Raycast(ray,hit)){                
  5.          if(Input.GetTouch(0).phase==TouchPhase.Moved){  
  6.              //一个手指控制平移   
  7.            if(Input.touchCount==1){              
  8.              hit.collider.transform.position.x=hit.point.x;  
  9.              hit.collider.transform.position.y=hit.point.y;  
  10.            }else{    
  11.              //多个手指控制旋转        
  12.              hit.collider.transform.RotateAround(hit.collider.transform.position,Vector3.up,-Input.GetAxis("Mouse X"));  
  13.              hit.collider.transform.RotateAround(hit.collider.transform.position,-Vector3.right,-Input.GetAxis("Mouse Y"));  
  14.            }   
  15.          }  
  16.        }  
  17.       
  18.       if(Input.GetKey(KeyCode.Escape)){  
  19.          Application.Quit();  
  20.       }    
  21.    }  

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

更多Android相关信息见Android 专题页面 http://www.bkjia.com/topicnews.aspx?tid=11

相关内容