Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > Android

Android Разработка игр на платформе Android

Ответ
 
Опции темы
Старый 21.07.2015, 08:34   #1
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
libGDX

Как только начал использовать, сразу возникли воросы:
  • setBlendFunc какие может применять параметры? хотельсь бы картинку по BlendingMode в openGL
  • Нельзя установить флаг, что бы все текстуры были с линейной интерполяцией?
  • setColor для BitmapFont не работает? У меня нет, получаю из него BitmapFontCache и устанавливают setColors, только это меняет цвет. Версия 1.6.9
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 21.07.2015, 13:37   #2
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: libGDX

А в исходниках посмотреть? (intellij idea позволяет с goto declaration в пару кликов их открывать).

UPD: в классе Texture есть
final static Map<Application, Array<Texture>> managedTextures
- списочек загруженных текстур.
Модификатора доступа нет - чтобы добраться до него, надо будет унаследоваться от Texture или забить на этот способ.
Флагов не заметно, по дефолту в переменные присваивается Nearest.
Имхо, проще написать какой-нибудь метод в стиле Texture loadTexture(String name), который будет грузить текстуру и ставить нужные параметры фильтрации, генерировать mipMaps и делать прочие вещи.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW

Последний раз редактировалось Igor, 21.07.2015 в 19:11.
(Offline)
 
Ответить с цитированием
Старый 26.08.2015, 19:41   #3
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: libGDX

Вопрос возник про box2d.
Я создал игрока, делаю прыжок apllyImpulse(0,-10000), и он типо прыгает, но если начать двигать его по горизонтали в полете (setLinearVelocity (x, y),где 'у'- старая скорость,или импульсом), то он перестает падать, пока я не перестану двигать, затем продолжает, как будто на паузу падение поставили.
Будто блокируется физика во время установки параметров.
Почему так может быть?

Как сделать скорость падения более нефизизически быстрой, setGravity(0,-40) не помогают, linearDamping(0f) тоже.

Код пока не могу скинуть.
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 26.08.2015, 19:53   #4
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: libGDX

Когда двигаешь тело командой setLinearVelocity() - ты жестко задаешь вектор его движения. Естественно гравитация перестает влиять на него.
Двигай при помощи applyForce или applyImpulse.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 27.08.2015, 06:42   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: libGDX

Сообщение от FireOwl Посмотреть сообщение
Когда двигаешь тело командой setLinearVelocity() - ты жестко задаешь вектор его движения. Естественно гравитация перестает влиять на него.
Двигай при помощи applyForce или applyImpulse.
В том то и дело, что не помогает, и ттак фризится.
Код
Vector2 lv;
Vector2 pos;

public 
void move(Vector2 dir) {
    
pos body.getPosition();
    if (
dir.0) {
        
sprite.setFlip(truefalse);
    } else if (
dir.0) {
        
sprite.setFlip(falsefalse);
    }
    
lv body.getLinearVelocity();
    if (
Math.abs(lv.x) < speed || dir.!= 0) {
        
body.applyLinearImpulse(new Vector2(dir.100000f speed0), posfalse);
    } else if (
dir.== 0) {
       
// lv.x = 0;
       // body.setLinearVelocity(lv);
    
}

}
public 
void jump() {
    
groundTest();
    if (
hasGround && lv.<= 0) {
        
body.applyLinearImpulse(new Vector2(0speed 18000f), postrue);
        
hasGround false;
    }
}

private 
void groundTest() {
    
//hasGround = false;
    
world.rayCast(new RayCastCallback() {
        @
Override
        
public float reportRayFixture(Fixture fixtureVector2 pointVector2 normalfloat fraction) {

            if (
fixture == collider_f || fixture == body_f) {
                
hasGround false;
                return -
1;
            }
            
hasGround true;
            
Gdx.app.log("Callback length:"point.dst(pos) + "");
            return 
0;
        }
    }, 
pos, new Vector2(pos.xpos.rect.height 0.55f));

__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 27.08.2015, 11:05   #6
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: libGDX

Собрал демку (на основе старой записи из блога LibGDX):
http://pastebin.com/650qW2NG

Движение происходит как раз через импульсы, с контролем максимальной скорости:
Vector2 vel player.getLinearVelocity();
Vector2 pos player.getPosition();

// cap max velocity on x
if(Math.abs(vel.x) > MAX_VELOCITY) {
    
vel.Math.signum(vel.x) * MAX_VELOCITY;
    
player.setLinearVelocity(vel.xvel.y);
}

// apply left impulse, but only if max velocity is not reached yet
if(Gdx.input.isKeyPressed(Keys.A) && vel.> -MAX_VELOCITY) {
    
player.applyLinearImpulse(-2f0pos.xpos.ytrue);
}
// apply right impulse, but only if max velocity is not reached yet
if(Gdx.input.isKeyPressed(Keys.D) && vel.MAX_VELOCITY) {
    
player.applyLinearImpulse(2f0pos.xpos.ytrue);

Полная картина - на Пастебин.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
RegIon (27.08.2015)
Старый 27.08.2015, 12:12   #7
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: libGDX

Попробую.
Проблема выскакивает когда импульс 8-10 значный, на низких-нормально
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:26.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com