using DG.Tweening; using System.Collections; using System.Collections.Generic; using UnityEngine; using static Unity.Burst.Intrinsics.X86.Avx; /// /// 剥线钳 /// public class Tool_WireStripper : Tool_Base { /// /// 开始剪封印 /// /// public void CutOpen(Device_Seal device_Seal) { base.startAction?.Invoke(); base.isMoving = true; transform.parent = null; transform.DORotate(device_Seal.testPosAndRot.eulerAngles, 0.5f); transform.DOMove(device_Seal.testPosAndRot.position, 1).OnComplete(() => { //播放动画 StopAllCoroutines(); StartCoroutine(PlayAnimi(device_Seal)); }); } /// /// 剪的动画 /// /// IEnumerator PlayAnimi(Device_Seal device_Seal) { SkinnedMeshRenderer renderer = GetComponentInChildren(); float vlaue = 0; //打开 while (renderer.GetBlendShapeWeight(0) < 100) { vlaue += (Time.deltaTime * 200); renderer.SetBlendShapeWeight(0, vlaue); yield return null; } //关闭 while (renderer.GetBlendShapeWeight(0) > 0) { vlaue -= (Time.deltaTime * 200); renderer.SetBlendShapeWeight(0, vlaue); yield return null; } //剪断 device_Seal.Cut(); isMoving = false; ReBackHead(); int result = (triggerAction == null ? 0 : triggerAction.Invoke(device_Seal.triggerName, true)); } private void Update() { if (Input.GetMouseButtonDown(0) && !isMoving) { //点击螺丝验电 Ray tmpray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(tmpray, out RaycastHit hit)) { //封印 Device_Seal ds = hit.transform.GetComponent(); if (ds != null) { if ((triggerAction == null ? 0 : triggerAction.Invoke(ds.triggerName, false)) == 0) { CutOpen(ds); } } } } } }