using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//网线接口的基础功能,与那个做对接,那个触碰发生的变化
public class NetPortBase : MonoBehaviour{
//模型编号
public enum EnumModelBumber{
NetPortA, NetPortB, NetPortC, NetPortD
}
public EnumModelBumber EnumModel;
//触碰震动反馈
public bool TouchShake = true;
//触碰音效反馈
public bool TouchSound = true;
//位置重置
public void MsPosReset(){
MsLightEffect(false);
switch(EnumModel){
case EnumModelBumber.NetPortA:
transform.parent = null;
transform.localPosition = new Vector3(15.6f, 3.41f, 1.8285f);
break;
case EnumModelBumber.NetPortB:
transform.parent = null;
transform.localPosition = new Vector3(15.6f, 3.41f, 1.925f);
break;
case EnumModelBumber.NetPortC:
transform.parent = null;
transform.localPosition = new Vector3(15.6f, 3.41f, 1.7488f);
break;
case EnumModeBumber.NetPortD:
transform.parent = null;
transform.localPosition = new Vector3(15.6f, 3.41f, 1.6407f);
break;
default:
break;
}
StartCoroutine(YiedReset());
}
IEnumerator YiedReset(){
MsCancelBox(true);
MsCancelRig(false);
yield return new WaitForSeconds(0.5f);
MsCancelBox(false);
MsCancelRig(true);
}
private void OnTriggerEnter(Collider other){
switch(EnumModel){
case EnumModelBumber.NetPortA:
MsEnterA(other);
break;
case EnumModelBumber.NetPortB:
MsEnterB(other);
break;
case EnumModeBumber.NetPortC:
MsEnterC(other);
break;
case EnumModelBumber.NetPortD:
MsEnterD(other);
break;
default:
break;
}
}
private bool touchSpace = true;
IEnumerator MsTouchSpace(){
touchSpace = false;
yield return new WaitForSeconds(1.0f);
touchSpace = true;
}
private void MsEnterA(Collider other){
}
private void MsEnterB(Collider other){
}
private void MsEnterC(Collider other){
}
private void MsEnterD(Collider other){
}
private void OnTriggerStay(Collider other){
switch(EnumModel){
case EnumModelBumber.NetPortA:
MsStayA(other);
break;
case EnumModelBumber.NetPortB:
MsStayB(other);
break;
case EnumModelBumber.NetPortC:
MsStayC(other);
break;
case EnumModeBumber.NetPortD:
MsStayD(other);
break;
default:
break;
}
}
private void MsStayA(Collider other){
//手柄触发
if(other.name.IndexOf(“b_r”) > -1){
if(MyConst.RIndexTrigger){
transform.parent = other.transform;
transform.localPosition = new Vector3(-0.019f, -0.054f, 0.045f);
transform.localEulerAngles = new Vector3(-51f, 38.3f, 78.4f);
NetPort.MsInstance.MsNetAGrab();
MsLightEffect(false);
}
}
//交换器A网口
if(other.name.Equals(“NetPortAA”)){
transform.parent = null;
transform.parent = other.transform;
transform.localEulerAngles = Vector3.zero;
transform.localPosition = new Vector3(-0.00011f, 0f, -0.00447f);
MsCancelBox(false);
MsCancelRig(true);
MsCancelAll();
NetPort.MsInstance.MsNetAMarry();
}
} //立钻哥哥:private void MsStayA(Collider other){}
private void MsStayB(Collider other){
//手柄触发
if(other.name.IndexOf(“b_r”) > -1){
if(MyConst.RIndexTrigger){
MsCancelRig(true);
transform.parent = other.transform;
transform.localPosition = new Vector3(-0.019f, -0.054f, 0.045f);
NetPort.MsInstance.MsNetBGrab();
MsLightEffect(false);
}
}
//机箱网口
if(other.name.Equals(“NetPortBA”)){
transform.parent = null;
transform.parent = other.transform;
transform.localEulerAngles = new Vector3(0, 0, -90);
transform.localPosition = new Vector3(-0.00011f, 0f, -0.00284f);
MsCancelBox(false);
MsCancelRig(true);
MsCancelAll();
NetPort.MsInstance.MsNetBMarry();
}
} //立钻哥哥:private void MsStayB(Collider other){}
private void MsStayC(Collider other){
... ... // 立钻哥哥:代码类似,不再拓展
}
private void MsStayD(Collider other){
... ... // 立钻哥哥:代码类似,不再拓展
}
private void OnTriggerExit(Collider other){
switch(EnumModel){
case EnumModelBumber.NetPortA:
MsExitA(other);
break;
case EnumModelBumber.NetPortB:
MsExitB(other);
break;
case EnumModelBumber.NetPortC:
MsExitC(other);
break;
case EnumModelBumber.NetPortD:
MsExitD(other);
break;
default:
break;
}
} //立钻哥哥:private void OnTriggerExit(Collider other){}
private void MsExitA(Collider collider){
}
private void MsExitB(Collider collider){
}
private void MsExitC(Collider collider){
}
private void MsExitD(Collider collider){
}
//呼吸特效
public void MsLightEffect(bool off){
if(!MyConst.FirstEnter){
off = false;
}
for(int i = 0; i < transform.GetChild(0).childCount; i++){
transform.GetChild(0).GetChild(i).GetComponent<MeshRenderer>().enabled = off;
}
} //立钻哥哥:public void MsLightEffect(bool off){}
//触碰音效
public AudioClip TouchClip;
//触碰音效播放
public void MsPlayTouchClip(AudioClip clip){
if(!TouchSound){
return;
}
AudioSource source;
if(transform.GetComponent<AudioSource>() != null){
source = transform.GetComponent<AudioSource>();
}else{
source = gameObject.AddComponent<AudioSource>();
}
source.playOnAwake = false;
source.clip = clip;
source.Play();
}
//触碰震动
public void MsTouchShake(){
if(!TouchShake){
return;
}
VRInput.MsInstance.RightShock();
}
//刚体效果
public void MsCancelRig(bool off){
transform.GetComponent<Rigidbody>().isKinematic = off;
}
//碰撞器
public void MsCancelBox(bool off){
transform.GetComponent<BoxCollider>().enabled = off;
}
//不可选状态
public void MsCancelAll(){
MsLightEffect(false);
MsCancelBox(false);
MsCancelRig(true);
}
//可选状态
public void MsOnCancelAll(){
switch(MyConst.EnumMode){
case MyConst.EnumExaminMode.Study:
MsLightEffect(true);
break;
case MyConst.EnumExaminMode.Practice:
break;
case MyConst.EnumExaminMode.Examin:
break;
default:
break;
}
MsCancelRig(false);
MsCancelBox(true);
} //立钻哥哥:public void MsOnCancelAll(){}
} //立钻哥哥:public class NetPortBase:MonoBehaviour{}