您好,欢迎访问三七文档
实验二Unity游戏脚本一、实验目的与要求1.熟悉及掌握MonoDevelop脚本编辑器的使用方法。2.Unity脚本的生命周期。3.熟练使用脚本来操作游戏对象。二、实验仪器与软件1.PC计算机2.Unity3D软件三、实验内容及步骤1.熟悉MonoDevelop脚本编辑器的使用方法,联系实现脚本调试。源代码:usingUnityEngine;usingSystem.Collections;publicclassDebugger:MonoBehaviour{voidStart(){vari=100;varj=i;Debug.Log(j);}voidUpdate(){}}运行结果:2.编程实现创建游戏对象(立方体,球体),给游戏对象命名,改变颜色,添加刚体组件。源代码:usingUnityEngine;usingSystem.Collections;publicclassCube:MonoBehaviour{voidStart(){}voidOnGUI(){if(GUILayout.Button(创建立方体,GUILayout.Height(40))){//设置该模型默认为立方体GameObjectobjCube=GameObject.CreatePrimitive(PrimitiveType.Cube);//给此对象添加一个刚体,用于物理感应objCube.AddComponentRigidbody();//设置这个游戏对象的名称objCube.name=Cube;//设置此模型材质的颜色objCube.renderer.material.color=Color.blue;//设置此模型的坐标objCube.transform.position=newVector3(0.0f,5.0f,0.0f);}if(GUILayout.Button(创建球体,GUILayout.Height(40))){//设置该模型默认为球体GameObjectobjSphere=GameObject.CreatePrimitive(PrimitiveType.Sphere);//给此对象添加一个刚体,用于物理感应objSphere.AddComponentRigidbody();//设置这个游戏对象的名称objSphere.name=Sphere;//设置此模型材质的颜色objSphere.renderer.material.color=Color.red;//设置此模型的坐标objSphere.transform.position=newVector3(0.0f,5.0f,0.0f);}}voidUpdate(){}}运行结果:3.分别通过名称、标签获得游戏对象,通过标签获得多个游戏对象。①通过名称获得游戏对象源代码:usingUnityEngine;usingSystem.Collections;publicclassFindObect:MonoBehaviour{//立方体对象privateGameObjectobjCube;//球体对象privateGameObjectobjSphere;//是否旋转立方体privateboolisCubeRoate=false;//是否旋转球体privateboolisSphereRoate=false;//按钮提示信息privatestringCubeInfo=旋转立方体;privatestringSphereInfo=旋转球体;voidStart(){//获取游戏对象objCube=GameObject.Find(Cube);objSphere=GameObject.Find(Sphere);}voidUpdate(){//用户点击“旋转立方体”按钮时旋转模型if(isCubeRoate){//当立方体对象不为null时旋转if(objCube){objCube.transform.Rotate(0.0f,Time.deltaTime*200,0.0f);}}//用户点击“旋转球体”按钮时旋转模型if(isSphereRoate){//当立方体对象不为null时旋转if(objSphere){objSphere.transform.Rotate(0.0f,Time.deltaTime*200,0.0f);}}}voidOnGUI(){//添加用于旋转立方体的按钮if(GUILayout.Button(CubeInfo,GUILayout.Height(50))){if(!isCubeRoate){isCubeRoate=true;CubeInfo=停止旋转立方体;}else{isCubeRoate=false;CubeInfo=旋转立方体;}}//添加用于旋转球体的按钮if(GUILayout.Button(SphereInfo,GUILayout.Height(50))){if(!isSphereRoate){isSphereRoate=true;SphereInfo=停止旋转球体;}else{isSphereRoate=false;SphereInfo=旋转球体;}}//添加用于销毁游戏对象的按钮if(GUILayout.Button(立即销毁模型,GUILayout.Height(50))){//立即销毁立方体与球体对象Destroy(objCube);Destroy(objSphere);}}}运行结果:②通过标签获得多个游戏对象源代码:usingUnityEngine;usingSystem.Collections;publicclassFindTagObject:MonoBehaviour{voidStart(){//得到包含MyTag标签的游戏对象数组varobjs=GameObject.FindGameObjectsWithTag(MyTag);//将5号元素的标签名称修改为TestTagobjs[2].tag=TestTag;//遍历所有游戏对象foreach(varobjinobjs){Debug.Log(以+obj.tag+标签为游戏对象的名称+obj.name);//判断标签的名称是否为TestTagif(obj.tag==TestTag){Debug.Log(这个标签为TestTag);}//判断该游戏对象是否包含TestTag这个标签if(obj.tag.CompareTo(TestTag)==0){Debug.Log(obj这个对象附带的标签为TestTag);}}}voidUpdate(){}}运行结果:4.通过脚本控制游戏对象,改变游戏对象的位置,旋转游戏对象,缩放游戏对象。①改变游戏对象的位置源代码:usingUnityEngine;usingSystem.Collections;publicclassChangeLocation:MonoBehaviour{//立方体在X轴方向上的坐标privatefloatValue_x=0.0f;//立方体在y轴方向上的坐标privatefloatValue_y=0.0f;//立方体在z轴方向上的坐标privatefloatValue_z=0.0f;//立方体对象privateGameObjectobj;voidStart(){//得到立方体对象obj=GameObject.Find(Cube);}voidOnGUI(){GUILayout.Box(移动立方体X轴);Value_x=GUILayout.HorizontalSlider(Value_x,-10.0f,10.0f,GUILayout.Width(200));GUILayout.Box(移动立方体Y轴);Value_y=GUILayout.HorizontalSlider(Value_y,-10.0f,10.0f,GUILayout.Width(200));GUILayout.Box(移动立方体Z轴);Value_z=GUILayout.HorizontalSlider(Value_z,-10.0f,10.0f,GUILayout.Width(200));//设置立方体的位置obj.transform.position=newVector3(Value_x,Value_y,Value_z);GUILayout.Label(立方体当前位置:+obj.transform.position);}voidUpdate(){}}运行结果:②旋转游戏对象源代码:usingUnityEngine;usingSystem.Collections;publicclassRotateObject:MonoBehaviour{//立方体对象privateGameObjectobjCube;//圆柱体对象privateGameObjectobjCylinder;//旋转速度privateintspeed=100;voidStart(){//获得对象objCube=GameObject.Find(Cube);objCylinder=GameObject.Find(Cylinder);}voidOnGUI(){if(GUILayout.Button(立方体沿X轴旋转,GUILayout.Height(30))){objCube.transform.Rotate(Vector3.right*Time.deltaTime*speed);}if(GUILayout.Button(立方体沿Y轴旋转,GUILayout.Height(30))){objCube.transform.Rotate(Vector3.up*Time.deltaTime*speed);}if(GUILayout.Button(立方体沿Z轴旋转,GUILayout.Height(30))){objCube.transform.Rotate(Vector3.forward*Time.deltaTime*speed);}if(GUILayout.Button(立方体围绕圆柱体旋转,GUILayout.Height(30))){objCube.transform.RotateAround(objCylinder.transform.position,Vector3.up,Time.deltaTime*speed);}GUILayout.Label(立方体旋转角度+objCube.transform.rotation);}voidUpdate(){}}运行结果:③缩放游戏对象源代码:usingUnityEngine;usingSystem.Collections;publicclassScaleObject:MonoBehaviour{privateGameObjectobj;//初始化缩放比例privatefloatscaleX=5.0f;privatefloatscaleY=5.0f;privatefloatscaleZ=5.0f;voidStart(){//得到缩放模型obj=GameObject.Find(Cube);}voidOnGUI(){GUILayout.Label(x轴缩放);scaleX=GUILayout.HorizontalSlider(scaleX,5.0f,10.0f,GUILayout.Width(100));GUILayout.Label(y轴缩放);scaleY=GUILayout.HorizontalSlider(scaleY,5.0f,10.0f,GUILayout.Width(100));GUILayout.Label(Z轴缩放);scaleZ=GUILayout.HorizontalSlider(scaleZ,5.0f,10.0f,GUILayout.Width(100));//重新计算缩放比例obj.transform.localScale=newVector3(scaleX,scaleY,scaleZ);}voidUpdate(){}}运行结果:
本文标题:实验二
链接地址:https://www.777doc.com/doc-5036096 .html