刘安平 邵文冕 苑鹏涛 杜林娟 梁志强
摘 要 采用虚拟现实技术,通过Unity 3D软件构建虚拟世界,开发电气控制虚拟实践,并发布到Android游戏平台上。3D教学课件的应用,取得很好的实践教学效果。
关键词 Unity 3D;电气控制虚拟实践;Android游戏平台;3D教学课件
中图分类号:TP391.9 文献标识码:B
文章编号:1671-489X(2020)02-0030-03
Development of Electric Control Virtual Practice on Android Game Platform//LIU Anping, SHAO Wenmian, YUAN Pengtao, DU Linjuan, LIANG Zhiqiang
Abstract This paper develops electrical control virtual practice by adopting virtual reality technology and building virtual world through Unity 3D, and releases it to Android game platform. The application of 3D teaching courseware has achieved good practical teaching effect.
Key words Unity 3D; electrical control virtual practice; Android game platform; 3D teaching courseware
1 课题解决的具体问题
Windows平台的电气工程虚拟实践,每个训练室只有一台电脑,在实践教学应用过程中,不能全方位为学生提供服务;如果将虚拟实践平台安装在手机游戏平台上,每个学生都会有自己的虚拟实践平台。学生首先在Android手机游戏平台上进行电气控制虚拟实践,对器件布置、线路连接、电路检测和送电试车,有了整体认知和掌握,然后进行真正的电气控制实践操作,教学效果会更好。
笔者研发的Windows平台的电气工程虚拟实践,在一年的实践教学应用中进行了不断完善和更新,本次教研项目就是在此基础上进行开发的。在Android游戏平台实现电气工程虚拟实践,模型建立和脚本语言文件编写等前期准备工作已经基本完成;登录窗口建立、游戏关卡设计、评分系统、纠错提示以及手机屏幕的自适应调整,是课题解决的具体问题。
2 电气控制虚拟实践
电气控制训练课程内容是三相交流异步电动机控制线路安装实践,训练项目有自锁控制线路、正反转控制线路、自动往返控制线路和顺序控制线路等。下面以自锁控制线路为例,说明Android游戏平台实现电气控制虚拟实践的过程。
登录窗口设置 电气控制虚拟实践的登录窗口见图1,学生输入班级、姓名、学号等个人信息后,点击“开始”按钮,若是某一信息没有填写,会提示“信息不全”;信息填写完整后,点击“开始”,进入电气控制虚拟实践第一关。计时器在Android虚拟实践平台打开时,开始计时。
登录窗口的交互控制C#脚本语言部分语句:
public void begin() {
if (banji.text==""||xingming .text ==""||xuehao.text==""){
text_ts .text="信息不全!";
return;}
pan00.SetActive (false); //登录窗口面板隐藏
pan11.SetActive (true); //第一关卡面板显示
}
游戏关卡1:器件布置 将电气控制虚拟实践设计成四个游戏关卡,游戏关卡1的开始界面见图2,点击“器件布置图”,显示器件布置在虚拟实践台上的具体位置;点击器件名称,再按动方向按钮,实现器件布置;提示信息会显示器件移动方向的对错,或是否达到指定位置;把器件移动到指定位置附近,器件会自动移动到指定位置;按下
“聚焦”按钮,摄像机会聚焦到指定元器件,便于清晰观看元器件的外形和位置;学生得分为满分,显示“目标完
成”;按动“下一关”按钮,进入第二关卡。
关卡1的交互控制C#脚本语言部分语句:
void Update () {
//用Qijian分別替代5个元器件
Ax = Qijian.transform.position.x;
Az = Qijian.transform.position.z;
if (j1+j2 ==0){ //移动按钮抬起
if (t1) { text_ts.text = "选择QF";
} else if (t2) { text_ts.text = "选择KM";
} else if (t3) { text_ts.text = "选择FR";
} else if (t4) { ext_ts.text = "选择按钮";
} else if (t5) { text_ts.text = "选择 M";
} else { text_ts.text = ""; }
}else if(!t1 & !t2 & !t3 & !t4 & !t5){
text_ts.text = "请选择器件";
}else { //判断元器件移动方向是否正确
if ((Ax * j1 > 1) || (Az * j2 > 1)) {
text_ts.text = “No”;
} else if (((Ax * j1 < -1) || (Az * j2 < -1))) {
text_ts.text = “Yes”;
} else { text_ts.text = “OK”; }
} //左右移动
if (Ax > 0.5f || Ax < -0.5f) {
Qijian.transform.position += new Vector3 (j1 * 20 * Time.
deltaTime, 0, 0);
} //前后移动
if (Az > 0.5f || Az < -0.5f) {
Qijian.transform.position += new Vector3 (0, 0, j2 * 20 *
Time.deltaTime);
} //移动到指定位置
if ((Ax > -0.51f & Ax < 0.51f) & (Az > -0.51f & Az < 0.51f)) {
Qijian.transform.position = new Vector3 (0, 0, 0); }
}
游戏关卡2:线路连接 在游戏关卡2的开始界面,点击“线路连接图”,显示导线名称在线路连接图中的具体位置;点击导线名称,再移动方向按钮,完成线路连接;提示信息会显示导线移动方向的对错,或是否达到指定位置。再次点击导线名称,会使相机聚焦到导线应该连接的具体位置。关卡2的交互控制C#脚本语言和关卡1基本相同,这里不再阐述。
游戏关卡3:断电检测 在游戏关卡3的开始界面,点击“检测方法”按钮,显示电路检测步骤的文字说明;主电路检测时,点击“按下KM”,再依次按下“RU-V”“RU-W”“RV-W”,万用表的表笔出现并触碰负载开关下面的对应接线柱,显示主电路连接正确时的测量数据;控制电路检测时,点击“按下SB1”,再依次按下“RU-V”“RU-W”“RV-W”,会显示控制电路连接正确时的数据;没有按下交流接触器KM或正转启动按钮SB1,测量时就会有信息提示“请按下KM或SB1”;学生得分为满分,提示“目标完成”;按动“下一关”按钮,进入第四关卡。
关卡3的交互控制C#脚本语言部分语句:
void Update () {
if(t1 & (t3 || t4)){ //测主电路的UV、UW
p163.SetActive (true);
p086.SetActive (false);
p153.SetActive (false);
}else if (t1 & t5){ //测主电路的VW
p163.SetActive (false);
p086.SetActive (true);
p153.SetActive (false);
}else{ if (t2 & t5){ //测控制电路的VW
p163.SetActive (false);
p086.SetActive (false);
p153.SetActive (true);
}else{ //测控制电路的UV、UW
p163.SetActive (false);
p086.SetActive (false);
p153.SetActive (false); } }
}
游戏关卡4:送电试车 游戏关卡4是电气控制虚拟實践的最后一关,开始界面见图3。点击“电气原理图”,学生可以分析自锁控制线路的电路工作过程;依次点击“QF1”“QF2”“SB1”和“SB2”,完成电气控制虚拟实践送电试车过程;没有闭合电源开关和负载开关,按动按钮时会有提示信息“开关没有闭合”或“电动机没有工作”;学生得分为满分时,提示“闯关成功”,按“返回”按钮,回到退出窗口,同时计时器停止工作。
关卡4的交互控制C#脚本语言部分语句:
void Update (){
if (t3){ //QF1、QF2闭合,按动启动按钮
km1dong.transform.localScale = new Vector3(1, 0.92f, 1);
m1z.transform.Rotate(-450* Time.deltaTime, 0,0,
Space.Self);
}else{ //按动停止按钮,或QF1、QF2断开
km1dong.transform.localScale = new Vector3(1,1, 1);
m1z.transform.Rotate(0, 0, 0, Space.Self);
}
}
退出窗口设置 学生完成电气控制虚拟实践第四关后,返回到退出窗口。在退出窗口,直接显示学生的个人信息、电气控制虚拟实践成绩和计时时间;学生可以手机截图把成绩发到班级微信群里,由指导教师查看成绩;按“退出”按钮,退出电气控制虚拟实践桌面。
3 Android游戏平台的转化和相关设置
Unity 3D软件输出到Android平台的切换 依次点击Unity 3D程序的菜单“File”“Build Settings”,进入游戏平台切换菜单;依次点击菜单选项“Android”“Swich Platform”,完成Android游戏平台切换。能够完成Android
游戏平台切换的前提是,在Unity 3D软件安装时,必须勾选Android游戏平台组件。
JDK、SDK开发工具安装和相关设置 要在Unity 3D游戏开发平台发布安卓的apk程序,必须先安装Java-JDK和Android-SDK这两个工具。JDK是开发Java的库及虚拟机包,SDK是开发Android应用程序的系统包[1]。
1)JDK组件下载网址为“www.oracle.com\”,搜索并下载安装程序“jdk-8u231-windows-x64”,安装路径为“C:\Program Files\Java\”。
2)打开电脑的系统属性面板,新建系统变量,变量名为“JAVA_HOME”,变量值为“C:\Program Files\Java\jdk1.8.0_231”;编辑系统变量,变量名为“Path”,添加变量值为“% JAVA_HOME %\bin;% JAVA_HOME %\jre\bin”;
新建系统变量,变量名为“CLASSPATH”;变量值为“% JAVA_
HOME %\ lib\dt.jar; % JAVA_HOME % \lib\tools.jar”。
3)SDK组件下载网址为“www.androiddevtools.cn\”,
找到并下载安装程序“install_r24.4.1-windows”,安装路径为“D:\Program Files\SDK\”。程序安装成功后,打开“SDK Manager.exe”,勾选“Android SDK Tools”“An-
droid SDK Platform-tools”“Android 10 (API 29)”“API
28.Q preview”“Android 9 (API 28)”“Android 8.1.0
(API 27)”“Android 8.0.0 (API 26)”“Android 7.1.1 (API 25)”“Android 7.0 (API 24)”“Android 6.0 (API 23)”,
再点击“Install...Packages”,完成SDK安装。
4)打開电脑的系统属性面板,新建系统变量,变量名为“ANDROID_HOME”,变量值为“D:\Program Files\SDK”;
编辑系统变量,变量名为“Path”,添加变量值为“% ANDROID _ HOME %\ platform-tools; % ANDROID_HOME %\
tools”。
5)依次点击Unity程序的菜单“Edit”“Preferences”
“External Tools”“Browse”,导入JDK和SDK安装路径。
6)打开Unity 3D的“Player Settings”面板,进行Android游戏平台apk安装包的包装设计,包括公司名称、安装包名称、图标以及安卓游戏平台的版本等。
手机屏幕的自适应调整 手机屏幕自适应调整,主要是调整Unity3D软件中UI组件中的画布canvas的参数。
1)将UI Scale Mode选项中的Constant Pixel Size更改为Scale With Screen Size。
2)设置Reference Resolution(默认分辨率),横屏设置为1280×720。
3)设置Match值,这里设置Match=0,横屏显示时根据确定的高度,适配不确定的显示宽度。
4 结语
通过Android平台的电气控制虚拟实践,学生在不消耗材料也没有安全隐患的前提下,能够快速掌握电气控制线路的电路连接、断电检测和送电试车等实践操作技能;3D教学课件在实践教学中的应用,既降低了教学成本,又提高了学生学习兴趣,取得很好的实践教学效果。
参考文献
[1]罗培羽.Unity3D网络游戏实战[M].北京:机械工业出版社,2016.