2012-03-14 28 views
5

Trong trò chơi của tôi, tôi sử dụngLibGDX: quy mô Hạt

static final float FRUSTUM_WIDTH = 10; 
static final float FRUSTUM_HEIGHT = 15; 

Vì vậy, khi tôi vẽ các hạt họ mất toàn bộ màn hình và là rất lớn! Vì vậy, làm thế nào để tôi quy mô chúng xuống để phù hợp với nhu cầu của tôi?

// Pew Labs

Trả lời

5

Hoặc bạn sử dụng trình biên tập hạt (phải trung thực tôi không nghĩ rằng đó là một ý tưởng tốt để định kích thước các hạt, như bạn đã đề cập đến các hạt sẽ không nhận được quá nhỏ (cho bất cứ điều gì khác tôi thực sự khuyên bạn nên nó)) hoặc bạn chỉ cần mở tập tin hiệu ứng hạt. Nó sẽ được tạo ra bởi trình soạn thảo hoặc bạn có thể sao chép nó từ các ví dụ. Trong tập tin này tìm kiếm các lĩnh vực dưới đây:

- Scale - 
lowMin: 0.0 
lowMax: 0.0 
highMin: 0.6 
highMax: 0.6 
relative: false 
scalingCount: 1 
scaling0: 1.0 
timelineCount: 1 
timeline0: 0.0 

Điều chỉnh highMinhighMax khi cần thiết.

+0

Điều này và tất cả những người khác không làm việc với thư viện mới nhất, bất kỳ trợ giúp nào? – lacas

+0

Cá nhân, tôi đã không sử dụng libgdx trong một thời gian, xin lỗi: (. – dom

25
ParticleEffect pe = new ParticleEffect(); 
    pe.load(Gdx.files.internal("data/particle/particle.p"), Gdx.files.internal("data/particle")); 
    pe.setPosition(x, y); 

    float pScale = 0.2f; 

    float scaling = pe.getEmitters().get(0).getScale().getHighMax(); 
    pe.getEmitters().get(0).getScale().setHigh(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getScale().getLowMax(); 
    pe.getEmitters().get(0).getScale().setLow(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getVelocity().getHighMax(); 
    pe.getEmitters().get(0).getVelocity().setHigh(scaling * pScale); 

    scaling = pe.getEmitters().get(0).getVelocity().getLowMax(); 
    pe.getEmitters().get(0).getVelocity().setLow(scaling * pScale); 
+1

Điều này thực sự hữu ích, cảm ơn bạn! –

2

Tôi đã sử dụng phương pháp tương tự như Victor nhưng những gì làm việc cho tôi:

ParticleEffect effect = new ParticleEffect(); 
    effect.load(Gdx.files.internal("particle/version1.p"), Gdx.files.internal("particle")); 
    effect.setPosition(x, .y); 
    float pScale = 0.02f; 
    float scaling; 
    Array<ParticleEmitter> emitters = effect.getEmitters(); 
    for (ParticleEmitter e : emitters) { 

     scaling = e.getScale().getHighMax(); 
     e.getScale().setHigh(scaling * pScale); 

     scaling = e.getScale().getLowMax(); 
     e.getScale().setLow(scaling * pScale); 

     scaling = e.getVelocity().getHighMax(); 
     e.getVelocity().setHigh(scaling * pScale); 

     scaling = e.getVelocity().getLowMax(); 
     e.getVelocity().setLow(scaling * pScale); 

     scaling = e.getSpawnHeight().getHighMax(); 
     e.getSpawnHeight().setHighMax(scaling * pScale); 

     scaling = e.getSpawnHeight().getLowMax(); 
     e.getSpawnHeight().setLowMax(scaling * pScale); 

     scaling = e.getSpawnHeight().getHighMin(); 
     e.getSpawnHeight().setHighMin(scaling * pScale); 

     scaling = e.getSpawnHeight().getLowMin(); 
     e.getSpawnHeight().setLowMin(scaling * pScale); 

     scaling = e.getSpawnWidth().getHighMax(); 
     e.getSpawnWidth().setHighMax(scaling * pScale); 

     scaling = e.getSpawnWidth().getLowMax(); 
     e.getSpawnWidth().setLowMax(scaling * pScale); 

     scaling = e.getSpawnWidth().getHighMin(); 
     e.getSpawnWidth().setHighMin(scaling * pScale); 

     scaling = e.getSpawnWidth().getLowMin(); 
     e.getSpawnWidth().setLowMin(scaling * pScale); 

     scaling = e.getXOffsetValue().getLowMax(); 
     e.getXOffsetValue().setLowMax(scaling * pScale); 

     scaling = e.getXOffsetValue().getLowMin(); 
     e.getXOffsetValue().setLowMin(scaling * pScale); 

     scaling = e.getYOffsetValue().getLowMax(); 
     e.getYOffsetValue().setLowMax(scaling * pScale); 

     scaling = e.getYOffsetValue().getLowMin(); 
     e.getYOffsetValue().setLowMin(scaling * pScale); 
    } 
    effect.start(); 
Các vấn đề liên quan