Panneau scène simplifié + boîte de collision + rôle joueur/ennemi/pnj
Trois retours utilisateur sur l'éditeur de scène 2D : - Retire l'arborescence "Objets de cette scène" (un objet reste sélectionnable en cliquant dessus sur le canevas) et le bouton "+ Ajouter un décor" (le type "decor" reste supporté côté serveur, juste plus accessible depuis ce menu). - Chaque objet de scène a désormais une boîte de collision AUTOMATIQUE (= sa propre boîte, comportement inchangé pour une condition de collision déjà posée) réglable dans un nouveau panneau "🧱 Collision" : activée/désactivée, forme (rectangle/cercle), taille et décalage — utile pour un sprite très paddé (CraftPix) dont la silhouette réelle est bien plus petite que son canevas. elementsOverlap() (conditions.js) applique ces réglages en restant identique par défaut. - Nouveau champ "🏷️ Rôle" (Joueur/Ennemi/PNJ) sur un personnage : SEUL un personnage "Joueur" est désormais déplacé/animé au clavier et suivi par la caméra (personnage-controller.js) — "Ennemi"/"PNJ" restent immobiles tant qu'aucune logique de flow ne les pilote (déplacement ennemi automatique/apparition, dialogue de PNJ... hors scope de ce réglage, qui ne fait qu'identifier "quel objet est le joueur"). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
9199897784
commit
bc3feb5080
@@ -9,6 +9,8 @@ from ..element_types.list_element_types import list_element_types
|
||||
from ..element_types.load_template_tree import _load_template_tree
|
||||
from ..rendering.personnage_data import resolve_personnage_animations
|
||||
from ..rendering.personnage_commands import resolve_personnage_commands
|
||||
from ..rendering.personnage_role import resolve_personnage_role
|
||||
from ..rendering.collision_settings import resolve_collision_settings
|
||||
from ..scenes.list_scene_objects import list_scene_objects
|
||||
from ..scenes.render_scene_object import render_scene_object
|
||||
|
||||
@@ -47,11 +49,18 @@ def full_game_payload(slug, player_id=db.PLAYER_SHARED):
|
||||
o["rendered_html"] = render_scene_object(o)
|
||||
# Déplacement/animation automatiques (voir
|
||||
# static/js/play/personnage-controller.js) : chaque
|
||||
# personnage porte ses touches déjà résolues (défauts
|
||||
# comblés) pour que le runtime client n'ait aucune logique
|
||||
# de repli à dupliquer.
|
||||
# personnage porte ses touches et son rôle déjà résolus
|
||||
# (défauts comblés) pour que le runtime client n'ait
|
||||
# aucune logique de repli à dupliquer — seul un
|
||||
# personnage "joueur" est déplacé/suivi par la caméra.
|
||||
if o["kind"] == "personnage":
|
||||
o["personnage_commandes"] = resolve_personnage_commands(o)
|
||||
o["personnage_role"] = resolve_personnage_role(o)
|
||||
# Boîte de collision (voir static/js/play/conditions.js::
|
||||
# elementsOverlap) : posée sur TOUT objet de scène, pas
|
||||
# seulement "personnage" — un décor/fond peut aussi servir
|
||||
# d'obstacle.
|
||||
o["collision"] = resolve_collision_settings(o)
|
||||
payload_screens.append({**s, "elements": objects})
|
||||
else:
|
||||
elements = list_elements(slug, s["id"], enforce_visibility=True, player_id=player_id)
|
||||
|
||||
Reference in New Issue
Block a user