Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
#1

Libgdx AI - Программирование Android

01.03.2015, 18:10. Просмотров 1098. Ответов 6
Метки нет (Все метки)

Добрый день , кто нибудь пользовался данной вещью?
https://github.com/libgdx/gdx-ai/wiki
Просто кроме этой страницы нигде информации не нашел, а на ней только какие-то "тесты", а что они собой представляют и как воспользоваться ими как примером не понимаю. Возможно кто-нибудь сможет подкинут ьпару примеров? Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2015, 18:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Libgdx AI (Программирование Android):

Libgdx polygon - Программирование Android
Добрый день, возникла следующая проблема : создаю объект класса Polygon (com.badlogic.gdx.math.Polygon) , поворачиваю его, рисую: poly...

SQLite и libGDX - Программирование Android
Здраствуйте! Программирую потихоньку игры на либе, так чисто для себя. Тут пришла в голову идея сделать классную игру, расписал все на...

Splash на libgdx - Программирование Android
Всем привет есть 2 атласа 2048x2048 на андроиде 4.2 и выше, работает все отлично, все что ниже версией ошибка, причем инициализации....

Компиляция игры, libGDX - Программирование Android
Здравствуйте. Помогите скомпилировать проект. Да, странная просьба) Я так понял, компилировать нужно в Andriod Studio. Игра написана с...

Нужен ли мне LibGDX? - Программирование Android
Уважаемые программисты, подскажите, пожалуйста, мне ответ на следующий вопрос: - Я хочу написать очень простую игру (для себя... с целью...

LibGDX вращение текстуры - Программирование Android
Здравствуйте, есть ли в llibGDX какой-нибудь способ повернуть текстуру кроме обычного draw, он не устраивает, потому что поворот текстуры...

6
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
01.03.2015, 18:27 #2
Nevermind_qqq, справа меню на этой странице:

Table of Contents

Home
Getting started with gdxAI
Infrastructure
Message Handling
Scheduling
Movement AI
Steering Behaviors
Formation Motion
Pathfinding
Pathfinding API
A*: A Little Bit of Theory
Indexed A*
Hierarchical Pathfinding
Path Smoothing
Decision Making
State Machine
Behavior Trees
0
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
01.03.2015, 20:17  [ТС] #3
YuraAAA, очень смешно
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
02.03.2015, 10:21 #4
Nevermind_qqq, что смешного? На скриншоте посмотрите
0
Миниатюры
Libgdx AI  
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
02.03.2015, 19:15  [ТС] #5
YuraAAA, я прочитал весь этот текст, я понимаю как работают эти алгоритмы, а вот как их классы использовать в своем коде не понимаю, т.к. примера практического нигде не нашел.
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
03.03.2015, 12:17 #6
Nevermind_qqq, https://github.com/libgdx/libgdx/wiki/Artificial-Intelligence это смотрели?
0
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
03.03.2015, 14:44  [ТС] #7
YuraAAA, конечно, просто нашел там только один пример кода: грубо говоря "как добавить implements Steerable", но реализовать тот же метод Seek это как-то не помогает

Добавлено через 1 час 43 минуты
YuraAAA, следуя примеру написал следующее, однако
Java
1
Gdx.app.log("",steering.linear.x+" "+steering.linear.y);
выдает все время "0.0 0.0"
вот код:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.ai.steer.Steerable;
import com.badlogic.gdx.ai.steer.SteeringAcceleration;
import com.badlogic.gdx.ai.steer.SteeringBehavior;
import com.badlogic.gdx.ai.steer.behaviors.Seek;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
 
public class Test extends GameActor  implements Steerable<Vector2> {
 
        private static final SteeringAcceleration<Vector2> steeringOutput = new SteeringAcceleration<Vector2>(new Vector2());
    float maxLinearSpeed;
    float maxLinearAcceleration;
    float maxAngularSpeed;
    float maxAngularAcceleration;
    Vector2 position;
    float orientation;
    Vector2 linearVelocity;
    float angularVelocity;
    float maxSpeed;
    boolean independentFacing;
    SteeringBehavior<Vector2> steeringBehavior;
 
    public Test(Vector2 position) {
                super(null);
        this.position = position;
    }
 
    public Test(Body body,Vector2 position) {
                super(body);
        this.position = new Vector2(100,100);
        this.linearVelocity= new Vector2(1,1);;
        this.angularVelocity=3;
        this.maxSpeed=3;
        this.independentFacing=false;
        steeringBehavior = new Seek<Vector2>(this,new Test(new Vector2(500,400)));
        }
 
    public void act(float delta) {
        if (steeringBehavior != null) {
            steeringBehavior.calculateSteering(steeringOutput);
            applySteering(steeringOutput, delta);
        }
    }
 
    private void applySteering(SteeringAcceleration<Vector2> steering,
            float time) {
        Gdx.app.log("",steering.linear.x+" "+steering.linear.y);
        this.position.mulAdd(linearVelocity, time);
        this.linearVelocity.mulAdd(steering.linear, time).limit(
                this.getMaxLinearSpeed());
        if (independentFacing) {
            this.orientation += angularVelocity * time;
            this.angularVelocity += steering.angular * time;
        } else {
            float newOrientation = calculateOrientationFromLinearVelocity(this);
            if (newOrientation != this.orientation) {
                this.angularVelocity = (newOrientation - this.orientation)* time;
                this.orientation = newOrientation;
            }
        }
    }
    
     public static float calculateOrientationFromLinearVelocity (Steerable<Vector2> character) {
            if (character.getLinearVelocity().isZero(MathUtils.FLOAT_ROUNDING_ERROR))
                return character.getOrientation();
            return character.vectorToAngle(character.getLinearVelocity());
        }
 
    @Override
    public float getMaxLinearSpeed() {
        return maxLinearSpeed;
    }
    @Override
    public void setMaxLinearSpeed(float maxLinearSpeed) {
        this.maxLinearSpeed=maxLinearSpeed;
    }
    @Override
    public float getMaxLinearAcceleration() {
        return maxLinearAcceleration;
    }
    @Override
    public void setMaxLinearAcceleration(float maxLinearAcceleration) {
        this.maxLinearAcceleration=maxLinearAcceleration;
    }
    @Override
    public float getMaxAngularSpeed() {
        return maxAngularSpeed;
    }
    @Override
    public void setMaxAngularSpeed(float maxAngularSpeed) {
        this.maxAngularSpeed=maxAngularSpeed;
    }
    @Override
    public float getMaxAngularAcceleration() {
        return maxAngularAcceleration;
    }
    @Override
    public void setMaxAngularAcceleration(float maxAngularAcceleration) {
        this.maxAngularAcceleration=maxAngularAcceleration;
    }
    @Override
    public Vector2 getPosition() {
        return position;
    }
    @Override
    public float getOrientation() {
        return orientation;
    }
    @Override
    public Vector2 getLinearVelocity() {
        return linearVelocity;
    }
    @Override
    public float getAngularVelocity() {
        return angularVelocity;
    }
    @Override
    public float getBoundingRadius() {
        return 0;
    }
    @Override
    public boolean isTagged() {
        return false;
    }
    @Override
    public void setTagged(boolean tagged) {
        
    }
    @Override
    public Vector2 newVector() {
        return null;
    }
    @Override
    public float vectorToAngle (Vector2 vector) {
        return (float)Math.atan2(-vector.x, vector.y);
    }
 
    @Override
    public Vector2 angleToVector (Vector2 outVector, float angle) {
        outVector.x = -(float)Math.sin(angle);
        outVector.y = (float)Math.cos(angle);
        return outVector;
    }
     
}
0
03.03.2015, 14:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.03.2015, 14:44
Привет! Вот еще темы с ответами:

Libgdx уроки посоветуйте - Программирование Android
Привет! Посоветуйте уроки по LibGDX плиз. В гугле на первом месте сайт - http://suvitruf.ru/libgdx/ Он норм? Может что то еще можно...

LibGDX загрузка аудио - Программирование Android
Ни как не получается загрузить музыку. В папку assets помещаю drop.wav rain.mp3 в методе create делаю так Sound dropSound; Music...

Столкновение в libgdx через overlaps - Программирование Android
Есть два списка Rectangle экземпляров. Мне нужно проверить пересечение через if (bullet.overlaps(enemyK) и удалить их оба. С одним объектом...

LibGDX. TexturePacker. Не пакует текстуры - Программирование Android
Sync Project with Gradle Files нажимал. Помогите починить, пожалуйста. Для наглядности: package...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru