Любая возможность исправить ноль камеры - PullRequest
0 голосов
/ 19 января 2020

Привет, может кто-нибудь помочь мне решить проблему с камерой. Пожалуйста, спасибо вам за время :) Я пытаюсь исправить мой черный экран, но он совсем не работает.

Если вы можете замедлить, то это будет просто и здорово, но я больше не знаю, как словить его на все, я пробую некоторые камеры vector3 и vector2, но нет, я действительно больше не читаю так много учебников, видео и ничего, что помогло мне решить эту проблему и ее раздражение для моей жизни. Пожалуйста, если вы можете это исправить, скажите мне, как еще раз спасибо.

    private GameObject GameObjectHolder;

    private IEnumerable<Player> _players;
    private IEnumerable<LootItem> _lootItems;
    private IEnumerable<ExfiltrationPoint> _extractPoints;

    private float _playersNextUpdateTime;
    private float _exfilNextUpdateTime;
    private float _espUpdateInterval = 10f;
    private float _itemNextUpdateTime;
    private Camera cam;

    private bool _isESPMenuActive;
    private bool _isConfigMenuActive;
    private bool _showPlayersESP;
    private bool _crosshair;
    private bool _showItemESP;
    private bool _showValuables;
    private bool _showExfiljewEPS;


    private float _maxDrawingDistance = 400f;
    private float _maxLootDrawingDistance = 1500f;

    void Start()
    {
        cam = Camera.main;
    }

    public void Load()
    {
        GameObjectHolder = new GameObject();
        GameObjectHolder.AddComponent<Abso>();

        DontDestroyOnLoad(GameObjectHolder);
    }

    public void Unload()
    {
        Destroy(GameObjectHolder);
        Destroy(this);
    }


    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F5))
        {
            Unload();
        }
        if (Input.GetKeyDown(KeyCode.F11))
        {
            _isESPMenuActive = !_isESPMenuActive;

            if (_isConfigMenuActive)
                _isConfigMenuActive = false;
        }

    }


    private void OnGUI()
    {
        if (_isESPMenuActive)
        {
            DrawESPMenu();
        }

        if (_isConfigMenuActive)
        {
            DrawConfigMenu();
        }


        GUI.Label(new Rect(10f, 10f, 1000f, 500), "<COLOR=#FF0000>H</color><COLOR=#FF4600>I</color><COLOR=#FF8C00>S</color><COLOR=#FFD200>T</color><COLOR=#FFff00>O</color><COLOR=#B9ff00>N</color><COLOR=#73ff00>C</color><COLOR=#2Dff00></color><COLOR=#00ff00>I</color><COLOR=#00ff46></color><COLOR=#00ff8C>T</color>");

        if (_showPlayersESP && Time.time >= _playersNextUpdateTime)
        {
            _players = FindObjectsOfType<Player>();
            _playersNextUpdateTime = Time.time + _espUpdateInterval;
        }



        if (_showPlayersESP)
        {
            DrawPlayers();
        }


        if (_showExfiljewEPS && Time.time >= _exfilNextUpdateTime)
        {
            _extractPoints = FindObjectsOfType<ExfiltrationPoint>();
            _exfilNextUpdateTime = Time.time + _espUpdateInterval;
        }

        if (_showExfiljewEPS)
        {
            jewExfilEPS();
        }

        if (_showItemESP && Time.time >= _itemNextUpdateTime)
        {
            _lootItems = FindObjectsOfType<LootItem>();
            _itemNextUpdateTime = Time.time + _espUpdateInterval;
        }
        if (_showItemESP && !_showValuables)
        {
            DrawLoot();
        }
        if (_showItemESP && _showValuables)
        {
            DrawValuableLoot();
        }

        if (_crosshair)
        {
            DrawCrosshair();
        }
    }

    public void DrawCrosshair()
    {
        GuiHelper.DrawBox((float)Screen.width / 2f, (float)Screen.height / 2f - 5f, 1f, 11f, Color.yellow);
        GuiHelper.DrawBox((float)Screen.width / 2f - 5f, (float)Screen.height / 2f, 11f, 1f, Color.yellow);
    }

    private void jewExfilEPS()
    {
        foreach (var point in _extractPoints)
        {
            if (point != null)
            {
                float distanceToObject = Vector3.Distance(Camera.main.transform.position, point.transform.position);
                var exfilContainerBoundingVector = new Vector3(
                    Camera.main.WorldToScreenPoint(point.transform.position).x,
                    Camera.main.WorldToScreenPoint(point.transform.position).y,
                    Camera.main.WorldToScreenPoint(point.transform.position).z);

                if (exfilContainerBoundingVector.z > 0.01)
                {
                    GUI.color = Color.green;
                    int distance = (int)distanceToObject;
                    String exfilName = point.name;
                    string boxText = $"{exfilName} - {distance}m";

                    GUI.Label(new Rect(exfilContainerBoundingVector.x - 50f, (float)Screen.height - exfilContainerBoundingVector.y, 100f, 50f), boxText);
                }
            }
        }
    }

    public void DrawLoot()
    {
        foreach (LootItem item in _lootItems)
        {
            if (item == null)
            {
                break;
            }
            float num = Vector3.Distance(Camera.main.transform.position, item.transform.position);
            Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(item.transform.position).x, Camera.main.WorldToScreenPoint(item.transform.position).y, Camera.main.WorldToScreenPoint(item.transform.position).z);
            if ((double)vector.z > 0.01)
            {
                GUI.color = Color.cyan;
                int num2 = (int)num;
                string name = item.name;
                string text = string.Format("{0} - {1}m", name, num2);
                GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
            }
        }
    }

    public void DrawValuableLoot()
    {
        foreach (LootItem lootItem in _lootItems)
        {
            if (lootItem == null)
            {
                break;
            }
            if (lootItem.name == null)
            {
                break;
            }
            if (lootItem.name == string.Empty)
            {
                break;
            }
            if (lootItem.name.Contains("key") || lootItem.name.Contains("tetriz") || lootItem.name.Contains("lion") || lootItem.name.Contains("virtexprocessor") || lootItem.name.Contains("defibrillator") || lootItem.name.Contains("bitcoin") || lootItem.name.Contains("transilluminator") || lootItem.name.Contains("prokill") || lootItem.name.Contains("video_card") || lootItem.name.Contains("document"))
            {
                float num = Vector3.Distance(Camera.main.transform.position, lootItem.transform.position);
                Vector3 vector = new Vector3(Camera.main.WorldToScreenPoint(lootItem.transform.position).x, Camera.main.WorldToScreenPoint(lootItem.transform.position).y, Camera.main.WorldToScreenPoint(lootItem.transform.position).z);
                if (num <= _maxLootDrawingDistance && (double)vector.z > 0.01)
                {
                    GUI.color = Color.cyan;
                    int num2 = (int)num;
                    string name = lootItem.name;
                    string text = string.Format("{0} - {1}m", name, num2);
                    GUI.Label(new Rect(vector.x - 50f, (float)Screen.height - vector.y, 100f, 50f), text);
                }
            }
        }
    }


    private void DrawPlayers()
    {
        try
        {
            foreach (Player player in _players.Where(plr => plr != null))
            {
                if (player == null)
                {
                    File.WriteAllText("greske.txt", "Here we go with player null error.");
                    return;
                }

                if (player.Transform == null)
                {
                    File.WriteAllText("greske.txt", "Player.Transform is null error");
                    return;
                }
                if (Camera.main == null)
                {
                    File.WriteAllText("greske.txt", "Camera.main is null error");
                    return;
                }

                float distanceToObject = Vector3.Distance(Camera.main.transform.position, player.Transform.position);
                Vector3 playerBoundingVector = new Vector3(Camera.main.WorldToScreenPoint(player.Transform.position).x, Camera.main.WorldToScreenPoint(player.Transform.position).y, Camera.main.WorldToScreenPoint(player.Transform.position).z);

                if (distanceToObject <= _maxDrawingDistance && playerBoundingVector.z > 0.01 && playerBoundingVector.x > -5 && playerBoundingVector.y > -5 && playerBoundingVector.x < 1920 && playerBoundingVector.y < 1080)
                {
                    var playerHeadVector = new Vector3(
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).x,
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y,
                        Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).z);

                    float boxVectorX = Camera.main.WorldToScreenPoint(player.Transform.position).x;
                    float boxVectorY = Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y + 10f;
                    float boxHeight = Math.Abs(Camera.main.WorldToScreenPoint(player.PlayerBones.Head.position).y - Camera.main.WorldToScreenPoint(player.Transform.position).y) + 10f;
                    float boxWidth = boxHeight * 0.65f;

                    Color guiBackup = GUI.color;
                    var playerColor = GetPlayerColor(player.Side);
                    var isAi = player.Profile.Info.RegistrationDate <= 0;
                    var deadcolor = player.HealthController.IsAlive ? playerColor : Color.gray;

                    GUI.color = deadcolor;
                    GuiHelper.DrawBox(boxVectorX - boxWidth / 2f, (float)Screen.height - boxVectorY, boxWidth, boxHeight, deadcolor);
                    GuiHelper.DrawLine(new Vector2(playerHeadVector.x - 2f, (float)Screen.height - playerHeadVector.y), new Vector2(playerHeadVector.x + 2f, (float)Screen.height - playerHeadVector.y), deadcolor);
                    GuiHelper.DrawLine(new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y - 2f), new Vector2(playerHeadVector.x, (float)Screen.height - playerHeadVector.y + 2f), deadcolor);


                    var playerName = isAi ? "[BOT]" : player.Profile.Info.Nickname;
                    string playerDisplayName = player.HealthController.IsAlive ? playerName : playerName + " [MRTAV]";
                    string playerText = $"{playerDisplayName} [{(int)distanceToObject}]M";

                    var playerTextVector = GUI.skin.GetStyle(playerText).CalcSize(new GUIContent(playerText));
                    GUI.Label(new Rect(playerBoundingVector.x - playerTextVector.x / 2f, (float)Screen.height - boxVectorY - 20f, 300f, 50f), playerText);
                    GUI.color = guiBackup;
                }
            }
        }
        catch (Exception ex)
        {
            File.WriteAllText("greske.txt", ex.ToString());
        }
    }



    private Color GetPlayerColor(EPlayerSide side)
    {
        switch (side)
        {
            case EPlayerSide.Bear:
                return Color.red;
            case EPlayerSide.Usec:
                return Color.blue;
            case EPlayerSide.Savage:
                return Color.yellow;
            default:
                return Color.yellow;
        }
    }

    public void DrawESPMenu()
    {
        GUI.color = Color.black;
        GUI.Box(new Rect(100f, 100f, 190f, 300f), "");
        GUI.color = Color.white;
        GUI.Label(new Rect(180f, 110f, 150f, 20f), "V-C 1.5");
        _showPlayersESP = GUI.Toggle(new Rect(110f, 140f, 120f, 20f), _showPlayersESP, " ESP IGRACI");
        _showExfiljewEPS = GUI.Toggle(new Rect(110f, 160f, 120f, 20f), _showExfiljewEPS, " IZLAZI ESP");
        _showItemESP = GUI.Toggle(new Rect(110f, 200f, 120f, 20f), _showItemESP, " LOOT ESP");
        _crosshair = GUI.Toggle(new Rect(110f, 240f, 120f, 20f), _crosshair, " NISAN");
        _isConfigMenuActive = GUI.Toggle(new Rect(110f, 260f, 120f, 20f), _isConfigMenuActive, " POSTAVKE");
    }

    private void DrawConfigMenu()
    {
        GUI.color = Color.black;
        GUI.Box(new Rect(400f, 100f, 190f, 300f), "");
        GUI.color = Color.white;
        GUI.Label(new Rect(480f, 110f, 150f, 20f), "POSTAVKE");
        GUI.Label(new Rect(410f, 140f, 150f, 20f), "ESP DALJINA: " + _maxDrawingDistance);
        _maxDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 170f, 150f, 20f), _maxDrawingDistance, 0f, 1500f);
        GUI.Label(new Rect(410f, 200f, 150f, 20f), "LOOT DALJINA: " + _maxLootDrawingDistance);
        _maxLootDrawingDistance = GUI.HorizontalSlider(new Rect(410f, 230f, 150f, 20f), _maxLootDrawingDistance, 0f, 1500f);
        _showValuables = GUI.Toggle(new Rect(410f, 260f, 150f, 20f), _showValuables, "  VRIJEDAN LOOT");
    }

    private double GetDistance(double x1, double y1, double x2, double y2)
    {
        return Math.Sqrt(Math.Pow(x2 - x1, 2.0) + Math.Pow(y2 - y1, 2.0));
    }
}

}

1 Ответ

0 голосов
/ 27 января 2020

может вы дадите больше информации? Я думаю, что «Camera.Main null» вызвано отсутствием основной камеры в вашей сцене, но я не знаю, потому что я не знаю, как сейчас выглядит наша сцена. также мне это нравится:

File.WriteAllText ("greske.txt", "Camera.main is null error"); [в DrawPlayers]

так что мой вопрос, если вы это имеете в виду, или настоящая ошибка консоли при запуске Unity? если вы можете, пожалуйста, сделайте скриншот, было бы полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...