Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
    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);
        }
    }
Exemplo n.º 3
0
    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);
        }
    }