using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; using DG.Tweening; public class TestPenInteractive : MonoBehaviour { public bool isInteractive; public GameObject g1; public bool isDian; List list = new List(); public bool isOver = false; public bool isDown = true; private void Start() { if (transform.GetComponent()) { g1 = transform.GetComponent().Higth; } } private void Update() { if (Input.GetMouseButtonDown(0)) { if (isDown) { //1.参数ray 为射线碰撞检测的光线(返回一个从相机到屏幕鼠标位置的光线) Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 100)) //如果碰撞检测到物体 { if (hit.collider.transform.tag.Equals("YanDian")) { GameManager.Instance.FirstPersonController.enabled = false; //transform.parent = hit.collider.transform; PenMove(hit.point); isOver = false; //transform.position = hit.point; if (hit.transform.GetComponent()) { list.Add(hit.transform.GetComponent()); FractionManager.Instance.isYanDian = true; hit.transform.GetComponent().启用交互 = false; } if (hit.transform.GetComponent()) { if (hit.transform.GetComponent().isDian) { g1.SetActive(true); } else { g1.SetActive(false); } } isDown = false; } } } } else { if (isOver) { g1.SetActive(false); transform.parent = GameManager.Instance.Player.transform; transform.localPosition = new Vector3(0.307f, 0.504f, 0.654f); transform.localEulerAngles = new Vector3(-180, -180, 180); isDown = true; } } } public void PenMove(Vector3 hitPoint) { DG.Tweening.Sequence sequence = DOTween.Sequence(); sequence.Append(transform.DOMove(hitPoint, 1f)) .AppendInterval(1.5f) .AppendCallback(() => { isOver = true; GameManager.Instance.FirstPersonController.enabled = true; }); sequence.Play(); //transform.DOMove(hitPoint, 1f).OnComplete(() => // { // isOver = true; // }).SetDelay(1f); } private void OnDisable() { for (int i = 0; i < list.Count; i++) { list[i].启用交互 = true; } } private void OnDestroy() { if (UIManager.Instance) { if (GameManager.Instance.YanDian) { GameManager.Instance.interactiveEnum = Interactive.none; } else { GameManager.Instance.interactiveEnum = Interactive.YanDianOk; } } Debug.Log("埃里克及时反馈辣椒水:" + GameManager.Instance.interactiveEnum); } }