Форум программистов, компьютерный форум, киберфорум
Программирование мультимедиа
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
129 / 126 / 22
Регистрация: 23.06.2009
Сообщений: 700
1

Движение в тайловой карте 2Д

24.03.2015, 13:39. Показов 761. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.Мучаюсь с столкновениями по тайловой карте. Впринципе сейчас работает.. по моему способу. Но У меня просчет немного кривоватый.И бывает что я могу в стену на половину пройти. Почему так я понимаю , но не могу решить эту задачу. Может кто подскажет.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
   public int checkColision(){
        Log.e("","i = "+mi+"|"+mj);
        if(map[mi][mj]==2){
            WINGAME=true;
            
        }else {
             if (moveLeft) {
 
                if (map[mi][mj - 1] == 0 && (mHero.getLeftX() - mHero.moveSpeed) <= mmap[mi][mj - 1].getRightX() && mHero.getBottomY() >= mmap[mi][mj - 1].getTopY()
                        && (mHero.getTopY() <= mmap[mi][mj].getBottomY())){
                    if(mHero.getTopY()<=mmap[mi-1][mj].getBottomY()) {
                    /*   || mHero.getTopY() <= mmap[mi-1][mj].getBottomY()
                        || mHero.getTopY() <= mmap[mi+1][mj].getBottomY())) {*/
                        Log.e("STOP", "STOP MOVING");
                        mHero.x = mmap[mi][mj - 1].getRightX() + mHero.moveSpeed;
                        return 1;
                    }else{
                    return 1;}
                }
 
 
            }
            if (moveRight) {
                if (map[mi][mj + 1] == 0) {
                    if ((mHero.getRightX() + mHero.moveSpeed) >= mmap[mi][mj + 1].getLeftX() && mHero.getBottomY() >= mmap[mi][mj + 1].getTopY()
                            && mHero.getTopY() <= mmap[mi][mj + 1].getBottomY()) {
                        Log.e("STOP", "STOP MOVING");
                        mHero.x = mmap[mi][mj + 1].getLeftX() - mHero.boxWidth;
                        return 1;
                    }
 
                }
            }
 
            if (moveUp) {
                if (map[mi-1][mj] == 0) {
                    if((mHero.getTopY()-mHero.moveSpeed)<=mmap[mi-1][mj].getBottomY()){
                        mHero.y=mmap[mi-1][mj].getBottomY()+mHero.moveSpeed;
                        return 1;
                    }
                }
 
            }
            if (moveBottom) {
                if (map[mi+1][mj] == 0) {
                    if((mHero.getBottomY()+mHero.moveSpeed)>=mmap[mi+1][mj].getTopY()){
                        mHero.y=mmap[mi+1][mj].getTopY()-mHero.boxHeight;
                        return 1;
                    }
                }
 
            }
 
        }
 
 
        return 0;
    }
Код на JAVA
mi и mj это тайл где находится главный герой.
Причина по которой я залезаю в кусок стены из-за того, что когда центр куба перемещается в новый тайл- то происходит расчет что поменялся тайл (я считаю по центру). В результате .. если допустим стоит 3 тайла подряд (стена) то идет отлично.. но если пытатся пройти после последнего вверх к примеру (обойти кубик) то я залезаю на него.


Почти впритык соприкасается если просто бегать вверх вниз влево вправо.
Миниатюры
Движение в тайловой карте 2Д  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2015, 13:39
Ответы с готовыми решениями:

Алгоритм удаления лишних клеток дороги на тайловой карте
Есть тайловая карта, на которой сгенерирована дорога. Бирюзовым и синим обозначена дорога. ...

Как сделать простое веб-приложение, рисующее движение трафика на карте?
Здравствуйте! Цель: нужно сделать простое веб-приложение, рисующее движение трафика на карте. В...

Замена спрайтов в тайловой сетке 2d
Доброго времени! В игре нужно реализовать смену спрайтов в тайловой сетке, т.е. по событию...

Скроллинг тайловой карты на openGL
Доброго времени суток! Сегодня я хотела бы обратиться к вам за помощью по следующему вопросу: как...

0
24.03.2015, 13:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2015, 13:39
Помогаю со студенческими работами здесь

Движение планеты в системе двойной звезды или движение трех тел
программа должна выводить координаты движения звезд и планеты в файл (рисую в gnuplot). ...

Возможно ли сделать движение зрачков, реагирующее на движение какого-либо объекта
Вообщем благодаря модеру удалось разукрасить картинку,за что ему спасибо. Нужна анимация для нее....

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

Сформировать меню: 1) свободное движение объекта 2)движение с клавиатуры
Сформировать на экране меню, состоящее из следующих пунктов: 1. Движение вдоль периметра экрана....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru