Тема: libGDX
Показать сообщение отдельно
Старый 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)
 
Ответить с цитированием