fix(game): 崩溃修复(卸载区块实体冻结)+ 立面光照、掉落可见、打击感、水下效果、空手拳头、血条左/饥饿右
- 崩溃(index out of range):实体所在区块卸载后失去碰撞支撑无限下坠到 负坐标,光查询越界 panic——WorldView 增 ChunkLoaded,未加载区块实体冻结; chunk 光查询加越界防御(双保险) - 立面光照:mesh 每面取**邻格**光照(原版光照模型)——此前用方块自身光照 (sky=0)导致悬崖/矿洞立面全黑(泥土竖向黑色根因) - 掉落可见:生成后 1 秒拾取延迟 + 图标加大到 0.45 - 打击感:攻击命中音(block.hit)+ 实体受击白闪(uTint)+ 手持挥动动画 - 水下效果:相机入水蓝色叠加(渲染.md §8 水体) - 空手显示肤色拳头(白羊毛 × 肤色 tint),持方块正常显示 - HUD 布局:血条左下、饥饿右下(经典布局)
This commit is contained in:
@@ -250,12 +250,14 @@ void main() {
|
||||
`
|
||||
|
||||
// chunkFragSrc 默认方块片元着色器:cutout 剔除 + 光照亮度混合。
|
||||
// uTint 颜色乘数(实体受击白闪/手持肤色,默认 1,1,1,1)。
|
||||
const chunkFragSrc = `
|
||||
#version 330 core
|
||||
in vec2 vUV;
|
||||
in vec2 vLight;
|
||||
uniform sampler2D uTex;
|
||||
uniform float uCutout; // 1=alpha test(树叶/玻璃),0=普通/半透明
|
||||
uniform vec4 uTint;
|
||||
out vec4 fragColor;
|
||||
void main() {
|
||||
vec4 c = texture(uTex, vUV);
|
||||
@@ -263,6 +265,6 @@ void main() {
|
||||
float sky = vLight.x / 15.0;
|
||||
float blk = vLight.y / 15.0;
|
||||
float b = max(sky, blk * 0.9 + 0.06);
|
||||
fragColor = vec4(c.rgb * b, c.a);
|
||||
fragColor = vec4(c.rgb * b * uTint.rgb, c.a);
|
||||
}
|
||||
`
|
||||
|
||||
Reference in New Issue
Block a user