Lajur Soal Jawab java yang dibawakan oleh editor PHP Zimo akan membincangkan fungsi grid penyahpepijatan dalam enjin permainan libgdx hari ini. libgdx ialah rangka kerja pembangunan permainan merentas platform yang berkuasa fungsi grid penyahpepijatannya boleh membantu pembangun adegan permainan nyahpepijat dengan lebih baik dan meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan secara terperinci cara mendayakan dan menggunakan grid nyahpepijat dalam libgdx untuk membantu pembangun menggunakan ciri ini dengan lebih baik untuk pembangunan permainan.
Bolehkah saya melukis grid 3d dalam aplikasi libgdx saya supaya saya boleh mengezum masuk dan keluar dari grid untuk melihat apa yang berlaku dengan aplikasi saya? Sebagai contoh, saya cuba mencipta sfera mudah yang sepatutnya berada di tengah-tengah skrin, tetapi ia tidak dan ia tersepit atau sesuatu.
Saya ingin tahu di mana kamera saya dan apakah perspektif kamera, semuanya dalam pemandangan. Inilah kodnya kerana stackoverflow memintanya.
@Override public void create() { modelBatch = new ModelBatch(); environment = new Environment(); environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f)); environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 10f, 10f, 20f)); cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); cam.position.set(150f, -9f, 200f); cam.lookAt(0, 0, 0); cam.near = 1f; cam.far = 300f; cam.update(); ModelBuilder modelBuilder = new ModelBuilder(); model = modelBuilder.createSphere(120f, 120f, 120, 32, 32, new Material(ColorAttribute.createDiffuse(Color.GREEN)), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal); instance = new ModelInstance(model); instance.transform.set(new Vector3(100, 100, 0), new Quaternion()); }
Bolehkah saya melakukan ini?
Selepas beberapa carian saya menjumpai senarai contoh libgdx yang menakjubkan ini, termasuk grid dengan paksi:
private void createaxes() { final float grid_min = -viewportwidth; final float grid_max = viewportwidth; final float grid_step = viewportwidth / 10; modelbuilder modelbuilder = new modelbuilder(); modelbuilder.begin(); meshpartbuilder builder = modelbuilder.part("grid", gl20.gl_lines, usage.position | usage.colorunpacked, new material()); builder.setcolor(color.light_gray); for (float t = grid_min; t <= grid_max; t += grid_step) { builder.line(t, 0, grid_min, t, 0, grid_max); builder.line(grid_min, 0, t, grid_max, 0, t); } builder = modelbuilder.part("axes", gl20.gl_lines, usage.position | usage.colorunpacked, new material()); builder.setcolor(color.red); builder.line(0, 0, 0, 100, 0, 0); builder.setcolor(color.green); builder.line(0, 0, 0, 0, 100, 0); builder.setcolor(color.blue); builder.line(0, 0, 0, 0, 0, 100); model axesmodel = modelbuilder.end(); models.add(axesmodel); modelinstance instance = new modelinstance(axesmodel); instances.add(instance); }
Berikut ialah contoh cara menggunakannya: https://www.php.cn/link/2d0098b9484a341987c5b11e51d7b79f
Anda boleh menggunakan "createlinegrid" pada modelbuilder
untuk mencipta Anda grid yang dilanjutkan ia) > Kapal terbang.
grid = modelbuilder.createlinegrid( 32, 32, 10.0f, 10.0f, new material(colorattribute.creatediffuse(color.red)), vertexattributes.usage.position | vertexattributes.usage.normal); gridinstance = new modelinstance(grid);
.
Kemudian anda hanya meletakkan grid
是 model
,gridinstance
是 modelinstance
dalam: render
调用包含到您的 modelbatch
modelBatch.render(gridInstance);
Anda boleh menyesuaikan bilangan garisan grid dan jaraknya untuk memenuhi keperluan anda.
Atas ialah kandungan terperinci Grid nyahpepijat untuk libgdx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!