Персонаж: модель киберниндзя со скелетом вместо капсул
- player/character/character.glb: 752 треугольника, 17 костей, 14 анимаций (idle, walk, run, crouch, slide, jump, fall, air_jump, dash, wallrun L/R, mantle, death); ноги на IK, исходник и скрипт сборки в Blender models - Ghost: выбор анимации по флагам и скорости, подгонка speed_scale, голова повторяет взгляд, свечение красится в цвет игрока от его id - Net: флаги FLAG_WALL_RIGHT и FLAG_AIR (RPC не менялись, сервер перевыкладывать не нужно) - Игрок: капсула в player.tscn заменена моделью, спрятанной от своей камеры - Модель в ghost.gd грузится через load, чтобы не ломать сервер без неё Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WxZo3ekR5m1af437Qzqwc1
This commit is contained in:
+9
-1
@@ -196,6 +196,11 @@ func _ready() -> void:
|
||||
head_base_pos = head.position
|
||||
base_fov = head.fov
|
||||
|
||||
# Тело видно в редакторе и отбрасывает тень, но своя камера его не рисует (слой 2)
|
||||
for mi: MeshInstance3D in $Model.find_children("*", "MeshInstance3D", true, false):
|
||||
mi.layers = 2
|
||||
head.cull_mask = 0xFFFFF & ~2
|
||||
|
||||
# Чтобы при спуске по ступенькам персонаж «прилипал» к полу, а не летел по воздуху
|
||||
floor_snap_length = STEP_HEIGHT
|
||||
|
||||
@@ -251,9 +256,12 @@ func _unhandled_input(event: InputEvent) -> void:
|
||||
func get_net_flags() -> int:
|
||||
var flags := 0
|
||||
if is_sliding or is_crouching: flags |= Net.FLAG_SLIDING # У призрака присед выглядит как сплюснутая капсула
|
||||
if is_wallrunning: flags |= Net.FLAG_WALLRUN
|
||||
if is_wallrunning:
|
||||
flags |= Net.FLAG_WALLRUN
|
||||
if wall_side > 0.0: flags |= Net.FLAG_WALL_RIGHT
|
||||
if is_dashing: flags |= Net.FLAG_DASH
|
||||
if is_mantling: flags |= Net.FLAG_MANTLE
|
||||
if not is_on_floor() and not is_wallrunning and not is_mantling: flags |= Net.FLAG_AIR
|
||||
return flags
|
||||
|
||||
func _get_input_dir() -> Vector2:
|
||||
|
||||
Reference in New Issue
Block a user