using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 验电笔 /// public class Tool_TestPen : Tool_Base { public MeshRenderer screem; /// /// 是否闪烁 /// private bool isFlicker; private float time; /// /// 是否回到手里 /// private float backToHandTime; private void Update() { if (GameManager.RunModelMgr != null && GameManager.RunModelMgr.SceneType != E_SceneType.Site) return; if (Input.GetMouseButtonDown(0) && !isMoving) { //点击螺丝验电 Ray tmpray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(tmpray, out RaycastHit hit)) { //插座/柜门 Device_Base db = hit.transform.GetComponent(); if (db != null) { Test(db); return; } //螺丝 Tool_Base tb = hit.transform.GetComponent(); if (tb != null) { Test(tb); return; } } } if (isFlicker) { time += Time.deltaTime * 3; if (time < 1) { screem.materials[0].color = Color.red; } else if (time > 1 && time < 2) { screem.materials[0].color = Color.white; } else { time = 0; } } //收回手中 if(backToHandTime>0) { backToHandTime -= Time.deltaTime; if (backToHandTime <= 0) { if (!isMoving) { isFlicker = false; base.ReBackHead(); } } } } /// /// 执行验电操作 /// /// 被验电设备 public void Test(Device_Base device_base) { if ((triggerAction == null ? 0 : triggerAction.Invoke($"{triggerName}+{device_base.triggerName}", false)) == 0) { if (device_base.deviceType == DeviceType.计量柜_插座) { isMoving = true; backToHandTime = 3f; var tmp = ((Device_Socket)device_base); //位置移动 base.hand_out_action?.Invoke(); transform.parent = null; transform.DORotate(tmp.testPosAndRot.eulerAngles, 0.5f); transform.DOMove(tmp.testPosAndRot.position, 1).OnComplete(() => { Debug.Log("计量柜_插座 已验电"); isFlicker = tmp.hasElectricity; screem.materials[0].color = isFlicker ? Color.red : Color.white; int index = (triggerAction == null ? 0 : triggerAction.Invoke($"{triggerName}+{device_base.triggerName}", true)); isMoving = false; backToHandTime = 3f; base.CallScoreAction(null, $"{triggerName}+{device_base.triggerName}"); }); } else if (device_base.deviceType == DeviceType.计量柜_柜门) { var tmp = ((Device_CabinetDoor)device_base); backToHandTime = 3f; //位置移动 base.hand_out_action?.Invoke(); transform.parent = null; transform.DOLocalRotate(tmp.testPosAndRot.localEulerAngles, 0.5f); transform.DOMove(tmp.testPosAndRot.position, 1).OnComplete(() => { Debug.Log("计量柜_柜门 已验电"); isFlicker = tmp.hasElectricity; screem.materials[0].color = isFlicker ? Color.red : Color.white; int index = (triggerAction == null ? 0 : triggerAction.Invoke($"{triggerName}+{device_base.triggerName}", true)); isMoving = false; backToHandTime = 3f; base.CallScoreAction(null, $"{triggerName}+{device_base.triggerName}"); }); } } } /// /// 执行验电操作 /// /// 被验电设备 public void Test(Tool_Base tool_base) { if ((triggerAction == null ? 0 : triggerAction.Invoke($"{triggerName}+{tool_base.triggerName}", true)) == 0) { if (tool_base.toolType == ToolType.螺丝) { isMoving = true; backToHandTime = 3f; var tmp = ((Tool_Screw)tool_base); base.hand_out_action?.Invoke(); //位置移动 transform.parent = null; transform.DOLocalRotate(tmp.installPos.localEulerAngles, 0.5f); transform.DOMove(tmp.installPos.position, 1).OnComplete(() => { Debug.Log("螺丝 已验电"); isFlicker = tmp.hasElectricity; screem.materials[0].color = isFlicker ? Color.red : Color.white; isMoving = false; backToHandTime = 3f; base.CallScoreAction(null, $"{triggerName}+{tool_base.triggerName}"); }); } } } }