今天主要来说下unity手机控制物体移动的方法和步骤,主要是上次的项目做的就是这方面的内容,所以现在就把它拿出来给大家分享一下,如何去做,怎么才能把它做好,下面就开始来说下详细的步骤:

一、创建Unity项目

       打开Unity游戏编辑器界面,在导航菜单栏中选择File --->  New Project菜单项,在弹出界面中选择Create new Project页面,将项目名命名为MobilityModel,然后再点击Create Project,完成项目的创建。

       然后点击保存(Ctrl+S)保存场景。


二、构建模型

       在Hierarchy视图中分别创建游戏对象Plane(面板)、Cube(立方体)、Sphere(球体)、Cylinder(圆柱体)、Capsule(胶囊体),然后鼠标拖动创建的游戏对象将他们摆放在合适的位置。

       接下来在游戏中添加一个光源,在Hierarchy视图中选择Create--->Directional light菜单项,光源是游戏中非常重要的一个属性,一定要在游戏场景中设置它,如果不设置光源对象,Game视图会非常暗,严重影响游戏的效果。

 

三、添加脚本

       在Project视图中点击Create--->JavaScript菜单项创建一个游戏脚本,将其命名为MobilityModelScript.js,在脚本上编写如下代码:

Mobilitymodelscript.js代码



  1. //模型移动速度  
  2. var TranslateSpeed = 10;  
  3. //模型旋转速度  
  4. var RotateSpeed = 1000;  
  5. //绘制UI界面  
  6. function OnGUI(){  
  7.     //设置GUI背景色  
  8.     GUI.backgroundColor = Color.red;  
  9.     if(GUI.Button(Rect(10,10,70,30),"向左旋转")){  
  10.         //向左旋转  
  11.         transform.Rotate(Vector3.up * Time.deltaTime * (-RotateSpeed));  
  12.     }  
  13.     if(GUI.Button(Rect(90,10,70,30),"向前移动")){  
  14.         //向前移动  
  15.         transform.Translate(Vector3.forward * Time.deltaTime * TranslateSpeed);  
  16.     }  
  17.     if(GUI.Button(Rect(170,10,70,30),"向右旋转")){  
  18.         //向右旋转  
  19.         transform.Rotate(Vector3.up * Time.deltaTime * RotateSpeed);  
  20.     }  
  21.     if(GUI.Button(Rect(90,50,70,30),"向后移动")){  
  22.         //向后移动  
  23.         transform.Translate(Vector3.forward * Time.deltaTime * (-TranslateSpeed));  
  24.     }  
  25.     if(GUI.Button(Rect(10,50,70,30),"向左移动")){  
  26.         //向左移动  
  27.         transform.Translate(Vector3.right * Time.deltaTime * (-TranslateSpeed));  
  28.     }  
  29.     if(GUI.Button(Rect(10,50,70,30),"向右移动")){  
  30.         //向右移动  
  31.         transform.Translate(Vector3.right * Time.deltaTime * TranslateSpeed);  
  32.     }  
  33.       
  34.     //显示模型位置信息  
  35.     GUI.Label(Rect(250,10,200,30),"模型位置"+transform.position);  
  36.     //显示模型旋转信息  
  37.     GUI.Label(Rect(250,50,200,30),"模型旋转"+transform.rotation);  
  38. }  
上述代码中重要方法和属性如下:
      OnGUI()方法用来绘制GUI界面组件。
      GUI.Button():设置一个按钮,返回true时表示该按钮被按下。
      GUI.Label():设置一个文本框。
      transform:为当前绑定模型的变换对象。
      transform.Rotate():设置模型旋转。
      transform.Translate():设置模型平移。
      Time.deltaTime:该数值为一个只读属性,不可修改,表示完成最后一帧的事件,单位为秒。
      Vector3:标志一个模型移动或者旋转的方法。
      Rect:规定一个矩形区域,用于显示控件。
      将编写好的脚本对象,将其从Project视图拖拽到Hierarchy视图中的立方体(Cube)对象上,如果没有提示错误,表示脚本绑定成功,运行游戏后该游戏对象将执行该脚本中的内容。
 
       目前立方体对象与其他模型对象之间是不存在碰撞的,但是运行游戏后,可以控制立方体(Cube)直接穿越另一个模型对象。为了让模型对象之间具有物理的碰撞,需要给模型对象添加一个刚体(Rigidbody)属性,添加方式:首先在Hierarchy视图中选中立方体对象,在Uinty导航菜单栏中选择Component --> Physics 
-->Rigidbody菜单项即可。
 
四、测试运行
       点击运行按钮就能看到结果,可以点击显示的六个按钮对象,可以移动Cube(立方体)的位置和旋转。