usingUnityEngine;
usingSystem.Collections;
publicclassModelRotationScript?:?MonoBehaviour?{
? ? ?publicGameObject?model;//目標(biāo)物體
? ? ?publicCamera?myCamera;//攝像機(jī)
? ? ?Vector2?first?=?Vector2.zero;//記錄鼠標(biāo)點(diǎn)擊的初始位置
? ? ?Vector2?second?=?Vector2.zero;//記錄鼠標(biāo)移動(dòng)時(shí)的位置
? ? ?booldirectorToLeft?=false;
? ? ?booldirectorToRight?=false;
? ? ?booldirectorToUp?=false;
? ? ?booldirectorToDown?=false;
? ? ?booldragging?=false;//標(biāo)記是否鼠標(biāo)在滑動(dòng)
? ? ?//?Use?this?for?initialization
? ? ?voidStart?()?{
? ? ?}
? ? ?//?Update?is?called?once?per?frame
? ? ?voidUpdate?()?{
? ? ?if(Input.GetMouseButton(0))?{
? ? ? ? ? ? ? ?Ray?ray?=myCamera.ScreenPointToRay?(Input.mousePosition);
? ? ? ? ? ? ? ?RaycastHit?hit?;
? ? ? ? ? ? ? ?if(Physics.Raycast?(ray,outhit))?{
? ? ? ? ? ? ? ? ? ? //print(hit.collider.gameObject.name);
? ? ? ? ? ? ? ? ? ? if(hit.collider.gameObject.name?=="3D?Model"&&?dragging?==true)?{
? ? ? ? ? ? ? ? ? ? ? ? ? Vector3?newPosition?=?Vector3.zero;
? ? ? ? ? ? ? ? ? ? ? ? ? floatspeed?=?0;
? ? ? ? ? ? ? ? ? ? ? ? ? if(directorToLeft?==true)?{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? newPosition?=newVector3?(0,?-1,?0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? speed?=?15;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print?("left");
? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ?if(directorToRight?==true){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? speed?=?10;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? newPosition?=newVector3?(0,?1,?0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print?("right");
? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? if(directorToUp?==true)?{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? speed?=?15;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? newPosition?=newVector3?(1,?0,?0);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? print?("up");
? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? if(directorToDown?==true){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? speed?=?10;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? newPosition?=newVector3?(-1,?0,?0);
? ? ? ? ? ? ? ? ? ? ? ? ? print?("down");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? GetComponent().transform.RotateAround?(model.transform.localPosition,?newPosition,?speed?*?Time.deltaTime);
? ? ? ? ? ? ? }
? ? ? ? ? }
? ? ?}
? ? ?}
? ? ?voidOnGUI()?{
? ? ? ? ? if(Event.current.type?==?EventType.MouseDown){//記錄鼠標(biāo)按下的位置
? ? ? ? ? ? ? ?first?=?Event.current.mousePosition?;
? ? ? ? ? }
? ? ? ? ? dragging?=false;
? ? ? ? ? if(Event.current.type?==?EventType.MouseDrag){//記錄鼠標(biāo)拖動(dòng)的位置
? ? ? ? ? ? ? ? dragging?=true;
? ? ? ? ? ? ? ? second?=?Event.current.mousePosition?;
? ? ? ? ? ? ? ? Vector2?slideDirection?=?second?-?first;
? ? ? ? ? ? ? ? floatx?=?slideDirection.x,?y?=?slideDirection.y;
? ? ? ? ? ? ? ? if(y?<?x?&&?y?>?-x)?{//?right
? ? ? ? ? ? ? ? ? ? ? directorToLeft?=false;
? ? ? ? ? ? ? ? ? ? ? directorToRight?=true;
? ? ? ? ? ? ? ? ? ? ? directorToUp?=false;
? ? ? ? ? ? ? ? ? ? ? directorToDown?=false;
? ? ? ? ? ? ? ? ?} elseif(y?>?x?&&?y?<?-x)?{//?left
? ? ? ? ? ? ? ? ? ? ? directorToLeft?=true;
? ? ? ? ? ? ? ? ? ? ? directorToRight?=false;
? ? ? ? ? ? ? ? ? ? ? directorToUp?=false;
? ? ? ? ? ? ? ? ? ? ? directorToDown?=false;
? ? ? ? ? ? ? ? ?} elseif(y?>?x?&&?y?>?-x)?{//?up
? ? ? ? ? ? ? ? ? ? ? directorToLeft?=false;
? ? ? ? ? ? ? ? ? ? ? directorToRight?=false;
? ? ? ? ? ? ? ? ? ? ? directorToUp?=true;
? ? ? ? ? ? ? ? ? ? ? directorToDown?=false;
? ? ? ? ? ? ? ? } else{//?down
? ? ? ? ? ? ? ? ? ? ? directorToLeft?=false;
? ? ? ? ? ? ? ? ? ? ? directorToRight?=false;
? ? ? ? ? ? ? ? ? ? ? directorToUp?=false;
? ? ? ? ? ? ? ? ? ? ? directorToDown?=true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ?}
? ? }
}