Nano Hash - криптовалюты, майнинг, программирование

XNA 2D TileEngine Проблема с щелчком мыши

Моя проблема в том, что клики регистрируются только в правом нижнем углу, а в некоторых случаях даже не там, чем дольше вы отклоняетесь от 0.0, тем хуже становится лайки.

   public void Render(SpriteBatch B, Camera C)
    {
        Vector2 firstSquare = new Vector2(C.Position.X / 32, C.Position.Y / 32);
        int firstX = (int)firstSquare.X;
        int firstY = (int)firstSquare.Y;

        Vector2 squareOffset = new Vector2(C.Position.X % 32, C.Position.Y % 32);
        int offsetX = (int)squareOffset.X;
        int offsetY = (int)squareOffset.Y;
        for (int y = 0; y < 16; y++)
        {
            for (int x = 0; x < 26; x++)
            {
                Tile T = GetTile(x + firstX, y + firstY);
                if (T == null)
                {
                    continue;
                }
                T.RenderWithCamera(B,new Vector2((x*32)-offsetX,(y*32)-offsetY));

            }
        }   
   public void CheckClick(float mx, float my,Camera C)
    {
        Vector2 firstSquare = new Vector2(C.Position.X / 32, C.Position.Y / 32);
        int x = (int)firstSquare.X;
        int y = (int)firstSquare.Y;
        Vector2 squareOffset = new Vector2(C.Position.X % 32, C.Position.Y % 32);
        int offsetX = (int)squareOffset.X;
        int offsetY = (int)squareOffset.Y;
        int vx = (int)mx / 32;
        int vy = (int)my / 32;
        float x1 = vx + x;
        float y1 = vy + y;
        int maxX, maxY;
        maxX = C.Width / 32;
        maxY = C.Height / 32;
        Console.WriteLine("MAX_X:" + maxX + "MAX_Y:" + maxY);
        Tile T = GetTile(x1, y1);
        Rectangle A = new Rectangle((int)mx, (int)my, 1, 1);
        if (T == null)
        { Console.WriteLine("No Tile found"); return; }
        if (T.IsInside(A))
        {
            Console.WriteLine("Not inside?");
            Tile S = null;
            S = new Wall((int)x1, (int)y1, 0);
            if (S != null)
            {

                tiles.Add(S);
                tiles2[(int)T.pos.X, (int)T.pos.Y] = S;
            }

        }
        Console.WriteLine("Clicked Tile at X:" + T.pos.X + "Y:" + T.pos.Y);
    }
    public bool IsInside(Rectangle B) // TILE
    {
        Rectangle rectA = new Rectangle((int)Last_pos.X, (int)Last_pos.Y, icon.Width, icon.Height);

        Console.WriteLine("A:" + rectA.X + "A.y:" + rectA.Y + "B.X:" + B.X + "B.Y:" + B.Y);
        if(rectA.Intersects(B))
        {
            return true;
        }
        else
            return false;
    }
15.05.2011

  • Откуда CheckClick вызывается? Похоже, откуда бы он ни был вызван, это будет код преступника. 16.05.2011

Ответы:


1

Вот как мне нравится обрабатывать щелчок по тайловой карте.

int xTile = Math.floor((Mouse.X + CameraBounds.left) / Tile.width);
int yTile = Math.floor((Mouse.Y + CameraBounds.top) / Tile.height);
15.11.2011
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..