我剛開始使用libgdx創建遊戲。這是一個使用scene2d UI的自上而下的2D射擊遊戲。現在我想,我可以在某些層次上添加黑暗和光明,但我不想用box2d重寫所有內容。我不需要逼真的陰影,只需要一些環境光線和一個光環圍繞我的角色,這不受圍牆周圍的牆壁和其他障礙的影響。所以我想知道libgdx中是否有任何類型的燈光系統?或者,我可以使用box2dlights而不使用box2d body/world ...?謝謝Libgdx light without box2d
回答
在我看來,標記的答案是錯誤的。
它實際上很簡單,使用box2dLights而不使用box2d,如果你不想要任何陰影。問題是,如果有可能在角色周圍添加某種圓形光線。
我使用了兩種不同的方法,只有一種使用box2dlights。
標記答案中的文章闡明瞭使用FBO的方法。如果你只是想要點亮一個區域,你真的不需要。你只需要一個精靈,比如this。現在把它放在烏爾屏幕上,並且渲染時,請執行下列操作:
batch.setBlendFunction(GL20.GL_DST_COLOR, GL20.GL_SRC_ALPHA);
theLightSprite.draw(batch, parentAlpha);
batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
首先混合功能被改變,所以我們不只是渲染精靈,但在背景上的照明方式融入它。繪製完成後,將混合函數重新設置爲normal,這樣之後的其他所有內容都會再次正常渲染。而已。
第二種方法使用box2dlights。是的,我們確實需要box2d世界對象,但我們不需要對它做任何事情。所以我們做的是:
world = new World(new Vector2(0,0),false);
rayHandler = new RayHandler(world);
rayHandler.setCombinedMatrix(stage.getCamera().combined);
new PointLight(rayHandler,1000, Color.BLUE,radius,x_position,y_position);
首先我們創造了我們的世界,那就是無所作爲。我們只需要它來創建我們的RayHandler來計算我們的燈光。在第三個聲明中,我們設置了rayHandler的矩陣。在這種情況下,我使用scene2d,並因此使用階段相機組合矩陣。如果你使用其他相機,只需在這裏使用其組合矩陣。最後一個聲明用rayHandler創建了一個點光源,描述了光線的數量,燈光的顏色,半徑和位置。
現在我們所要做的,就是把我們的舞臺或精靈在我們的render()方法,並調用
rayHandler.updateAndRender();
後
的渲染方法。挺容易。
感謝您的回答,這是非常詳細和明確的! +1 – Springrbua
- 1. Libgdx Batch without ApplicationListener
- 2. Libgdx box2D錯誤
- 3. LibGDX/Box2D UnsatisfiedLinkError
- 4. libgdx box2d drawarc
- 5. LibGDX Touch Box2D Body
- 6. LibGDX Box2d getWorldPoint問題
- 7. LibGDX Box2D不渲染
- 8. LibGDX BOX2D變化maxPolygonVertices
- 9. box2d和libgdx中的彈弓
- 10. Java LibGDX Box2D燈光bug
- 11. Box2D的libgdx多邊形
- 12. Box2D的LibGDX繩問題
- 13. Box2D的libgdx上設備
- 14. Box2D Libgdx黑色屏幕
- 15. Libgdx Box2D速度不夠快
- 16. Box2d和libgdx中的粒子
- 17. libgdx box2d玩家手臂觸摸
- 18. 彈射器臂旋轉 - libgdx和box2d
- 19. 使用LibGDX不精確的Box2d座標
- 20. Libgdx Box2D的60fps的,但口吃
- 21. LibGdx Box2d collison與精靈不匹配
- 22. Libgdx Box2D像素到米轉換?
- 23. LibGDX Box2D的關聯體與對象
- 24. LibGDX - Box2D的:使用MouseJoint 2個手指
- 25. Box2D聯繫人監聽器,LibGDX
- 26. box2d(libgdx)堆疊物體不穩定
- 27. libgdx - box2d速度和力量不工作
- 28. Android,libgdx和box2d基礎知識
- 29. Libgdx Box2D設置圖像到身體
- 30. LibGDX Box2D:無法獲取燈具
感謝這個真正快速的答案。我會盡快完成這篇文章。謝謝! – Springrbua
我想我明白它的基本工作原理。在libgdx中,我可以使用我的舞臺的繪製方法,並使用深藍色透明(Alpha = 0.7f或類似的東西)顏色來添加環境光?但是我怎麼才能給角色增加明亮的光線呢?謝謝 – Springrbua
首先你以正常的方式呈現你的場景。然後,您創建一個屏幕大小的FBO,但您將(背景)顏色設置爲例如(0.7,0.7,0.7,1.0)(環境閃電)。之後,您可以在FBO上繪製所有燈光,就像在正常場景中繪製某些東西一樣。它們將成爲黑色背景上的白色斑點。完成後,您將在正常場景的頂部啓用混合渲染該FBO。由於fbo的黑暗環境顏色,所有沒有光線的地方會變暗。所有其他人會變得更加明亮(燈光)。 – noone