id Tech 4 : astuces complexes

Tout permuter

  • Déplacer une caméra sur une spline

    Domaines concernés : DarkRadiant, scripts.

    1. Dans DarkRadiant, créer une func_splinemover :

      1. Créer une petite brush et lui appliquer la texture NODRAW
      2. La convertir en func_splinemover (darkmod/func/func_splinemover)
    2. Créer une spline NURBS et dupliquer sa valeur dans le func_splinemover :

      1. Curve > Create NURBS Curve
      2. Afficher les données de la courbe et sélectionner sa propriété curve_Nurbs
      3. Sélectionner le func_splinemover et insérer la propriété curve_Nurbs avec sa valeur
      4. Supprimer la spline d'origine
    3. Ajuster la spline : passer en mode vecteur (touche V) et déplacer les deux points dans la spline pour refléter le déplacement voulu

    4. Créer l'objet de déplacement :

      1. Créer une petite brush et lui appliquer la texture NODRAW
      2. La convertir en func_mover (darkmod/func/Movers/func_mover)
      3. Nouvelle propriété, cinematic, avec la valeur 1. Ceci gardera l'entité activée lorsqu'une cinématique est en cours (ce qui est le cas quand on change de caméra)
    5. Créer la caméra :

      1. Créer un func_cameraview
      2. Nouvelle propriété, trigger, avec la valeur 1
      3. Nouvelle propriété, bind, avec le nom du func_mover comme valeur. Ceci permettra à la caméra de suivre la spline
      4. Nouvelle propriété, cinematic, avec la valeur 1
    6. Ajouter une cible pour la caméra :

      1. Créer une entité target_null et la placer à l'endroit voulu
      2. Ajouter une propriété au func_cameraview, target, avec comme valeur le nom du target_null. Ceci déterminera l'orientation de la caméra, mais seulement au chargement du niveau
    7. Écrire le script :

      // "spline" est une func_splinemover
      // "mover" est une func_mover
      sys.setCamera( $camera );
      $mover.time( 5 );  // L'action du mover durera 5 secondes
      $mover.accelTime( 0.1 );
      $mover.decelTime( 0.1 );
      $mover.disableSplineAngles();  // Stabilisation de la vue de la caméra
      $mover.startSpline( $spline );  // Commencer le déplacement de $mover sur $spline
      sys.waitFor( $mover );
      sys.firstPerson();  // Rétablir la caméra de première personne

  • Utiliser un script avec une entité trigger

    1. Créer la zone :

      1. Créer une brush qui sera la zone de l'entité trigger
      2. Transformer la brush en trigger (avec l'entité appropriée dans darkmod > Triggers, dans DarkRadiant)
    2. Créer le trigger_relay (darkmod > Triggers)
    3. Nouvelle propriété pour la brush du trigger : target -> nom du trigger_relay
    4. Nouvelles propriétés pour le trigger_relay :

      1. call -> fonction du script
      2. wait -> nombre de secondes à attendre avant de déclencher le relais à nouveau (pour un trigger_multiple, utile si le joueur est encore dans la zone)