Race 2: своя палитра и небо, чистовое запекание, вентиляторы сильнее, скрытая шахта, новая песня
- палитра целиком (индиго, пурпур, ледяная бирюза): SOLID/NEON, SURFACES/GLOWS, туман, ambient, свет запекания, ворота, полосы, надписи; новое небо - запекание 384 сэмпла + огни у подножия башни - вентилятор: VENT_MAX_RISE 16, VENT_ACCEL 80; шахта-лифт без знака и без столба/света (hidden) - музыка Race 2: Poloz «On My Way to Hell» с 1:40 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Binary file not shown.
+17
-16
@@ -48,16 +48,16 @@ func _ready() -> void:
|
||||
|
||||
# Цвета поверхностей — те же значения, что в Blender (kit.py: SOLID); освещение уже запечено в цветах вершин
|
||||
const SURFACES := {
|
||||
"Concrete": Color(0.11, 0.115, 0.125), "Dark": Color(0.016, 0.017, 0.02), "Steel": Color(0.13, 0.14, 0.15),
|
||||
"PaintY": Color(0.38, 0.30, 0.06), "PaintR": Color(0.26, 0.08, 0.05), "PaintB": Color(0.05, 0.08, 0.11),
|
||||
"PaintO": Color(0.33, 0.14, 0.05),
|
||||
"Concrete": Color(0.095, 0.105, 0.15), "Dark": Color(0.012, 0.013, 0.024), "Steel": Color(0.115, 0.125, 0.185),
|
||||
"PaintY": Color(0.30, 0.10, 0.36), "PaintR": Color(0.22, 0.05, 0.16), "PaintB": Color(0.04, 0.06, 0.18),
|
||||
"PaintO": Color(0.14, 0.09, 0.30),
|
||||
}
|
||||
# Светящиеся (мрачная палитра): Cyan — холодный белёсый, Magenta — тревожный красный, Orange — натриевая лампа
|
||||
const GLOWS := {
|
||||
"NeonCyan": [Color(0.50, 0.86, 0.82), 0.65], "NeonMagenta": [Color(0.95, 0.07, 0.04), 1.2],
|
||||
"NeonOrange": [Color(1.0, 0.42, 0.08), 1.3], "NeonYellow": [Color(0.92, 0.62, 0.10), 1.1],
|
||||
"NeonGreen": [Color(0.45, 0.85, 0.35), 1.0], "NeonBlue": [Color(0.25, 0.40, 0.70), 1.0],
|
||||
"NeonRed": [Color(1.0, 0.05, 0.05), 1.5], "NeonWhite": [Color(1.0, 0.72, 0.42), 0.9],
|
||||
"NeonCyan": [Color(0.30, 0.85, 0.98), 0.7], "NeonMagenta": [Color(0.85, 0.08, 0.65), 1.2],
|
||||
"NeonOrange": [Color(0.55, 0.22, 1.0), 1.3], "NeonYellow": [Color(0.72, 0.84, 1.0), 1.0],
|
||||
"NeonGreen": [Color(0.25, 0.95, 0.75), 1.0], "NeonBlue": [Color(0.28, 0.32, 0.92), 1.0],
|
||||
"NeonRed": [Color(1.0, 0.06, 0.28), 1.5], "NeonWhite": [Color(0.72, 0.82, 1.0), 0.9],
|
||||
}
|
||||
|
||||
# Коллизию создаёт импорт (узел Collision-colonly), здесь — внешний вид: материалы по именам из Blender
|
||||
@@ -120,10 +120,10 @@ func _build_environment() -> void:
|
||||
env.background_mode = Environment.BG_SKY
|
||||
env.sky = sky
|
||||
env.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR # свет на самом игроке/призраках; уровень освещён запечённо
|
||||
env.ambient_light_color = Color(0.26, 0.29, 0.33)
|
||||
env.ambient_light_color = Color(0.20, 0.22, 0.40)
|
||||
env.ambient_light_energy = 0.6
|
||||
env.fog_enabled = true
|
||||
env.fog_light_color = Color(0.2, 0.16, 0.13) # грязный дымный воздух
|
||||
env.fog_light_color = Color(0.10, 0.09, 0.24) # холодный индиго-дым высоких ярусов
|
||||
env.fog_density = 0.011
|
||||
env.fog_sky_affect = 0.45
|
||||
env.tonemap_mode = Environment.TONE_MAPPER_FILMIC
|
||||
@@ -133,13 +133,13 @@ func _build_environment() -> void:
|
||||
env.glow_hdr_threshold = 1.0
|
||||
env.adjustment_enabled = true
|
||||
env.adjustment_contrast = 1.15
|
||||
env.adjustment_saturation = 0.8
|
||||
env.adjustment_saturation = 0.9
|
||||
var we := WorldEnvironment.new()
|
||||
we.environment = env
|
||||
add_child(we)
|
||||
var sun := DirectionalLight3D.new() # подсветка только для персонажей
|
||||
sun.rotation_degrees = Vector3(-55.0, 35.0, 0.0)
|
||||
sun.light_color = Color(0.6, 0.68, 0.75)
|
||||
sun.light_color = Color(0.5, 0.58, 0.95)
|
||||
sun.light_energy = 0.4
|
||||
add_child(sun)
|
||||
|
||||
@@ -156,9 +156,9 @@ func _emissive(color: Color, energy: float, alpha := 1.0) -> StandardMaterial3D:
|
||||
|
||||
# ---------- ворота: высокие светящиеся рамы поперёк трассы ----------
|
||||
|
||||
const GATE_OFF := Color(0.55, 0.30, 0.14) # ещё не очередные: тусклые
|
||||
const GATE_NEXT := Color(1.0, 0.5, 0.15) # очередные: яркий натриевый
|
||||
const GATE_DONE := Color(0.45, 0.85, 0.35) # пройдены: зелёные
|
||||
const GATE_OFF := Color(0.30, 0.26, 0.55) # ещё не очередные: тусклый индиго
|
||||
const GATE_NEXT := Color(1.0, 0.18, 0.85) # очередные: яркая маджента
|
||||
const GATE_DONE := Color(0.25, 0.95, 0.95) # пройдены: ледяной циан
|
||||
|
||||
# Угол рыскания из данных (0 = вдоль -Z, -90 = на +X) — это ровно rotation.y в Godot
|
||||
func gate_yaw(i: int) -> float:
|
||||
@@ -241,7 +241,7 @@ func _add_laser(d: Array) -> void:
|
||||
area.add_child(cs)
|
||||
var bm := BoxMesh.new()
|
||||
bm.size = d[1]
|
||||
var mat := _emissive(Color(1.0, 0.04, 0.05), 2.4, 0.35 if d[1].y > 3.0 else 1.0)
|
||||
var mat := _emissive(Color(1.0, 0.05, 0.22), 2.4, 0.35 if d[1].y > 3.0 else 1.0)
|
||||
var mesh := _part(bm, mat, Vector3.ZERO)
|
||||
area.add_child(mesh)
|
||||
add_child(area)
|
||||
@@ -266,6 +266,7 @@ func _add_vent(d: Array) -> void:
|
||||
a.set_script(load("res://objects/vent.gd"))
|
||||
a.size = d[1]
|
||||
a.height = d[2]
|
||||
a.hidden = d[3]
|
||||
a.position = d[0]
|
||||
add_child(a)
|
||||
|
||||
@@ -315,7 +316,7 @@ func _add_rain() -> void:
|
||||
var mat := StandardMaterial3D.new()
|
||||
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
||||
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
||||
mat.albedo_color = Color(0.7, 0.78, 0.82, 0.3)
|
||||
mat.albedo_color = Color(0.62, 0.7, 0.95, 0.3)
|
||||
mat.billboard_mode = BaseMaterial3D.BILLBOARD_FIXED_Y
|
||||
mat.cull_mode = BaseMaterial3D.CULL_DISABLED
|
||||
quad.material = mat
|
||||
|
||||
@@ -45,14 +45,14 @@ const LASERS := [
|
||||
[Vector3(112.00, 52.25, -608.25), Vector3(4.00, 0.90, 0.50), 1, 3.00, 1.00, 1.50], # mR4
|
||||
]
|
||||
|
||||
# Вентиляционные потоки: центр решётки на полу, сечение (X, Z), высота столба
|
||||
# Вентиляционные потоки: центр решётки на полу, сечение (X, Z), высота столба, скрытый (без света и столба — шахта-лифт)
|
||||
const VENTS := [
|
||||
[Vector3(107.00, 43.80, -450.00), Vector2(6.00, 6.00), 14.00], # v_tn
|
||||
[Vector3(230.00, 23.80, -505.00), Vector2(6.00, 6.00), 15.00], # v1
|
||||
[Vector3(230.00, 36.30, -477.00), Vector2(6.00, 6.00), 15.00], # v2
|
||||
[Vector3(198.00, 48.80, -465.00), Vector2(6.00, 6.00), 15.00], # v3
|
||||
[Vector3(190.00, 61.30, -481.00), Vector2(6.00, 6.00), 15.00], # v4
|
||||
[Vector3(210.00, 23.80, -504.00), Vector2(8.00, 8.00), 53.00], # v_lift
|
||||
[Vector3(107.00, 43.80, -450.00), Vector2(6.00, 6.00), 14.00, false], # v_tn
|
||||
[Vector3(230.00, 23.80, -505.00), Vector2(6.00, 6.00), 15.00, false], # v1
|
||||
[Vector3(230.00, 36.30, -477.00), Vector2(6.00, 6.00), 15.00, false], # v2
|
||||
[Vector3(198.00, 48.80, -465.00), Vector2(6.00, 6.00), 15.00, false], # v3
|
||||
[Vector3(190.00, 61.30, -481.00), Vector2(6.00, 6.00), 15.00, false], # v4
|
||||
[Vector3(210.00, 23.80, -504.00), Vector2(8.00, 8.00), 53.00, true], # v_lift
|
||||
]
|
||||
|
||||
# Ускоряющие полосы: центр на полу, размер (ширина, длина), рыскание (направление разгона), скорость
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.3 MiB After Width: | Height: | Size: 4.3 MiB |
Reference in New Issue
Block a user