大概两三个月前曾经做过一个公司项目,主要内容是完成一个仿真平台,使学生不用在实验室就可以熟悉实验流程以及考核等。
这里是对项目的实现思想和代码语法以及细节的梳理。(应该会比较乱,但对自己来说是有益的)
总体来说,该项目并没有太多太复杂的逻辑,几乎是一条线走到底的流程。所以这里也按照流程来回顾。
首先是人物的漫游体,漫游体上有一个camera,当靠近试验台时强制中止漫游状态,整个实验就绪。场景中的一个BoxCollider上绑着的一个脚本
void OnTriggerStay(Collider c)
{
//camera1 = GameObject.Find("Camera1");
if (c.name=="Player")
{
//回归到实验准备界面
//Player.transform.position = readyPos;
//Player.transform.eulerAngles = Vector3.zero;
Player.transform.position = camera1.transform.position;
Player.transform.rotation = camera1.transform.rotation;
Player.GetComponent<FirstPersonController>().enabled = false;
_cam.transform.localEulerAngles = new Vector3(30, 0, 0);
pauseandstop.SetActive(false);
}
当这块区域(BoxCollider)检测到与人物漫游体的碰撞时,这段代码改变Player的位置和角度(camera是它的子物体)。
这样Player来到指定位置开始实验流程。之后的操作事件触发是用射线检测,当不同的按钮按下时,我们进行UI上左上方流程(图片)的更改等操作。射线检测:
void Update()
{
//if (zhichictrl==true)
//{
// sevensencond -= Time.deltaTime;
//}
//runover = GameObject.Find("timerun");
zidong = GameObject.Find("zidong");
qidong = GameObj