Nous sommes le 16 Sep 2019, 19:03

Heures au format UTC + 2 heures




Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: Coordonnées : insérer humains et voitures
MessagePosté: 24 Sep 2006, 23:25 
Hors ligne
Son Excellence
Avatar de l’utilisateur

Inscription: 22 Aoû 2004, 23:09
Messages: 12259
Localisation: France
Pour capturer des coordonnées, la translation et la rotation horizontale du joueur ou de la voiture dans laquelle il est, il existe ce script :


Code:
//Act_SetState -1, Inactive
  Wait 1024

Dim_Flt 16

// ###################
// ##### Type de rotation >
// #
Let Flt[0] = 0
// #
// # 0 = Lacet sur 180° avec BSV5 : Horz
// # 1 = Lacet sur 360° avec DC||ED : Z
// ###################

Dim_Act 2
Dim_Frm 2
GetActivePlayer 0
GetActiveCamera 1


Label eCp_SCpr
Let Flt[3] = -1
FreeRide_ScoreOn 0
Label eCp_ECpr
CommandBlock 0
CommandBlock 1
Ctrl_Read 2, Map
Ctrl_ReadEx 1, HandBrake
Let Flt[2] = Flt[1] + Flt[2]
If Flt[2] = 2, eCp_Plus, eCp_ECpr
Label eCp_Plus
FreeRide_ScoreOn 1
Let Flt[3] = Flt[3] + 1
If Flt[3] = 4,  eCp_PSon, -1
IfFltInRange 3, 0, 2, eCp_SonPos
PlaySound "00_kompas.wav", 1, 1, 1, 8
Let Flt[4] = 1
GoTo eCp_PSon
Label eCp_SonPos
PlaySound "beep50.wav", 1, 1, 1, 8
Let Flt[4] = 10000
Label eCp_PSon

Label eCp_Cpr
CommandBlock 0
CommandBlock 1
Ctrl_ReadEx 1, HandBrake
If Flt[1] = 1, eCp_Plus, -1
Let Flt[5] = Flt[5] * Flt[4]
FreeRide_ScoreSet Flt[5]
Label eCp_JV
FindNearActor 0, 1, car
CompareOwnerWithEx 0, 1, eCp_Vtr, -1
GetActorFrame 0, 0
GoTo eCp_JVp
Label eCp_Vtr
GetActorFrame 1, 0
Label eCp_JVp

Frm_GetWorldPos 0, 9
Frm_GetWorldRot 0, 12
Math_ACos 14
Let Flt[6] = Flt[14] * 2
If Flt[6] < 180, -1, eCp_DsO
Let Flt[7] = Flt[6] + 180
GoTo eCp_DsE
Label eCp_DsO
Let Flt[7] = Flt[6] - 180
Label eCp_DsE
Let Flt[7] = Flt[7] * -1
Let Flt[6] = Flt[7] + 360
If Flt[3] = 4, eCp_SCpr, -1
If Flt[3] = 0, eCp_PosX, -1
If Flt[3] = 1, eCp_PosY, -1
If Flt[3] = 2, eCp_PosZ, -1
If Flt[0] = 0, eCp_RH180, -1
If Flt[0] = 1, eCp_RH360, eCp_Cpr


Label  eCp_PosX
Let Flt[5] = Flt[9]
Let Flt[3] = 0
GoTo eCp_Cpr
Label  eCp_PosY
Let Flt[5] = Flt[10]
Let Flt[3] = 1
GoTo eCp_Cpr
Label  eCp_PosZ
Let Flt[5] = Flt[11]
Let Flt[3] = 2
GoTo eCp_Cpr

Label eCp_RH180
Let Flt[5] = Flt[14]
Let Flt[3] = 3
GoTo eCp_Cpr
Label eCp_RH360
Let Flt[5] = Flt[6]
Let Flt[3] = 3
GoTo eCp_Cpr



Pour faire marcher ce script après l'avoir inséré ; les touches 'Plan de la ville (Tab) + Frein à main (Espace)' et les coordonnées apparaissent dans le compteur d'argent. Il faut donc de quoi noter les valeurs sur du papier. 'Frein à main' pour passer à la valeur suivante à chaque fois :

  1. Position X
  2. Position Y
  3. Position Z
  4. Lacet
Pour la translation (donc X, Y et Z), il faut faire une conversion sur la feuille en divisant par 10000 les valeurs obtenues. En mettant une virgule pour BSV ou un point pour DCED avant les quatre derniers chiffres, exemple :

Code:
10560254 = 1056,0254
-856 = -0,0856


Enfin, comme les rotations ne sont pas pareil sur BSV6 et DCED, on peut choisir dans le script d'afficher la rotation pour le logiciel utilisé :

    // ###################
    // ##### Type de rotation >
    // #
    let flt[0] = 0
    // #
    // # 0 = Lacet sur 180° avec BSV5 : Horz
    // # 1 = Lacet sur 360° avec DC||ED : Z
    // ###################



Par contre, concernant les coordonnées des voitures, comme ce script ne récupère pas toutes les rotations pour une raison de simplicité (sinon il faudrait noter tout le quaternion), il faut mettre dans "GameInitEnd" un script qui place bien la voiture au chargement :

Code:
Dim_Act 1

FindActor 0, "LaVoiture"

Car_Calm 0

_________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


Haut
 Profil  
 
 Sujet du message: Re: Coordonnées : insérer humains et voitures
MessagePosté: 29 Mai 2009, 11:29 
Hors ligne
Avatar de l’utilisateur

Inscription: 08 Mar 2006, 17:57
Messages: 2421
Localisation: Aquitaine
Le script est bien. Y a-t-il une possibilité pour prendre la rotation sur l'autre axe ? Notamment pour placer un véhicule sur un terrain pentu.


Haut
 Profil  
 
 Sujet du message: Re: Coordonnées : insérer humains et voitures
MessagePosté: 19 Juin 2009, 18:45 
Hors ligne
Son Excellence
Avatar de l’utilisateur

Inscription: 22 Aoû 2004, 23:09
Messages: 12259
Localisation: France
Comme je le dis dans le message, on doit dans ce cas prendre tout le quaternion.


C'est pas juste un axe, bien qu'on pourrait faire une conversion en angles d'Euler mais qui perdrait en fiabilité à cause de son blocage de cardan si célèbre.

C'est pour ça qu'il vaut mieux utiliser la méthode du rafraîchissement de la position avec la fonction « Car_Calm Act » dans un script de chargement.

_________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 2 heures


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction par: phpBB-fr.com