Exemple #1
0
    // Update is called once per frame
    private void Update()
    {
        if (player.GetEnd())
        {
            return;
        }

        if (target)
        {
            if (dist >= 5f)
            {
                dist = 5f;
            }

            x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
            y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;

            y = ClampAngle(y, yMinLimit, yMaxLimit);

            Quaternion rotation = Quaternion.Euler(y, x, 0);
            Vector3    position = rotation * new Vector3(0f, 0f, -dist) + target.position + new Vector3(0f, 0f, 0f);
            position.y += 1.5f;

            transform.rotation = rotation;
            transform.position = position;
        }

        RaycastHit hit;
        Vector3    rayDir    = (transform.position - cameraRig.position).normalized;
        LayerMask  layerMask = 1 << LayerMask.NameToLayer("Player");

        if (Physics.Raycast(cameraRig.position, rayDir, out hit, 5f, ~layerMask))
        {
            dist = Vector3.Distance(cameraRig.position, hit.point) - 2f;
        }
        else
        {
            dist = 5f;
        }

        minimap_camera.MinimapCameraRotaiton(x);
    }