void Update() { icon.SetActive(lineRenderer.enabled); if (flag != null && flag.transform.childCount <= 0) { lineRenderer.enabled = false; } if (MiniMapController.GetInstance().canMove) { targetPosition = MiniMapController.GetInstance().clickPosition; DrawNavigationLine(targetPosition, isSetDestination, true); MiniMapController.GetInstance().canMove = false; } //自动寻路 if (CheckMoseButtonDown(1) && !MiniMapController.GetInstance().isEnterMiniMap) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { isSetDestination = true; targetPosition = hit.point; ShowClickEffect(hit.point); DrawNavigationLine(hit.point, true, false); } } if (isArrive) { isSetDestination = false; lineRenderer.enabled = false; if (flag != null && flag.transform.childCount > 0) { Destroy(flag.transform.GetChild(0).gameObject); } } if (flag.transform.childCount == 0) { agent.ResetPath(); } isArrive = Vector3.Distance(player.transform.position, targetPosition) < 2; }
void LateUpdate() { isAutoMove = controller.agent.hasPath && controller.agent.remainingDistance > controller.agent.radius; if (CameraUpAndDown) { if (Input.GetMouseButton(2)) { if (!mbMouseButtonDown) { mMouseDownPos = Input.mousePosition; mbMouseButtonDown = true; } else { Vector3 curpos = Input.mousePosition; float deltaY = mMouseDownPos.y - curpos.y; yDistance += deltaY * 0.008f; yDistance = Mathf.Clamp(yDistance, MinCameraPos, MaxCameraPos); mMouseDownPos = curpos; } } else { mbMouseButtonDown = false; } } if (isAutoMove) { if (!CameraUpAndDown) { yDistance = 3; } Distance = 6; mY = Target.localEulerAngles.x; mX = Target.localEulerAngles.y; } else if (!MiniMapController.GetInstance().isEnterMiniMap) { //鼠标右键旋转 if (Input.GetMouseButton(1)) { //获取鼠标输入 mX += Input.GetAxis("Mouse X") * SpeedX * 0.02F; mY -= Input.GetAxis("Mouse Y") * SpeedY * 0.02F; //范围限制 mY = ClampAngle(mY, MinLimitY, MaxLimitY); } //鼠标滚轮缩放 Distance -= Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed; Distance = Mathf.Clamp(Distance, MinDistance, MaxDistance); } //重新计算位置和角度 mRotation = Quaternion.Euler(mY, mX, 0); mPosition = mRotation * new Vector3(0.0F, yDistance, -Distance) + Target.position; if (isNeedDamping) { //球形插值 transform.rotation = Quaternion.Lerp(transform.rotation, mRotation, Time.deltaTime * Damping); //线性插值 transform.position = Vector3.Lerp(transform.position, mPosition, Time.deltaTime * Damping); } else { transform.rotation = mRotation; transform.position = mPosition; } //将玩家转到和相机对应的位置上 if (!isAutoMove && (controller.State == PlayerController.PlayerState.Walk || controller.State == PlayerController.PlayerState.Run)) { Target.rotation = Quaternion.Slerp(Target.rotation, Quaternion.Euler(0, mX, 0), Time.deltaTime); } }
void Update() { isUI = EventSystem.current.IsPointerOverGameObject(); //显示鼠标划过的物体名称 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.transform.parent != null && hit.transform.parent.CompareTag("canClick") && !isUI && !MiniMapController.GetInstance().isEnterMiniMap&& !Loading.isLoading) { mark.transform.position = Input.mousePosition; mark.SetActive(true); text.text = hit.transform.parent.name; } else { mark.SetActive(false); } } if (hit.transform == null) { mark.SetActive(false); } }