|
Re: Character wrapper - code python |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
23/02/2006 19:10 De Sideula
Post(s): 2051
|
Salut RedStar,
J'avais vu ta question mais n'étant pas expert en BGE, je pensais que quelqu'un d'autre pourrait t'aider. Apparemment, ce n'est pas le cas. Je sais pas si ça pourra te faire avancer, le problème semblant plus mathématique que dépendant du BGE a première vue. ![]() Est-ce que tu pourrais mieux décrire l'arbre de scène, en particulier pour le personnage et l'objet tracké ? Sont-ils sous des noeuds transformés ? Je ne comprends pas ce calcul :
Ça doit te rendre un vecteur nul (0,0,0) si on parle bien d'un produit vectoriel. Or, je ne vois pas comment ça peut faire une direction et donc fonctionner. ![]() Aucune idée pour ta dernière question...
Contribution le : 12/08 06:31:32
|
|
_________________
Développement en cours du hARMful Engine |
||
![]() ![]() |
|
Re: Character wrapper - code python |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
19/03/2016 16:30 De Belgique
Post(s): 1433
|
Contribution le : 15/08 11:13:14
|
|
![]() ![]() |
|
Re: Character wrapper - code python |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
23/02/2006 19:10 De Sideula
Post(s): 2051
|
Hello,
En l'état, le blend m'indique juste que le wrapper fonctionne bien. A moins que je sois passé à côté de la chose à voir ? Dans le premier post, tu parles de tracking mais je ne vois rien de tout ça dans le blend ? Du coup ça ne répond pas à ma question de savoir la position de ton perso et du tracker dans l'arbre de scène. Par exemple : ![]() La raison pour laquelle je voudrais connaître ça, c'est tout simple. Si tes objets (perso et tracker) sont directement enfants de la racine (inaccessible dans le scene tree de Blender), alors :
Encore faudrait-il vérifier quelques trucs, comme l'accès à cette orientation et la valeur retournée pour en être sûr !
Contribution le : 15/08 17:40:41
|
|
_________________
Développement en cours du hARMful Engine |
||
![]() ![]() |
|
Re: Character wrapper - code python |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
23/02/2006 19:10 De Sideula
Post(s): 2051
|
D'ailleurs, c'est peut-être un petit détail mais pour la partie code, je trouverais plus clair de faire ainsi :
Pourquoi ? Le calcul est strictement identique. Mais à la lecture du code, on sépare bien deux notions qui ne sont pas liées : la direction et la vitesse. Avec "Vector((0, 0.1, 0))", on mélange les deux valeurs à la fois et c'est pas hyper sexy. Direction, c'est un vecteur qui nous indique dans quelle direction aller (en orientation locale). On parle uniquement de direction. Donc on extrait uniquement la composante Y du vecteur orientation (techniquement, il faudrait normaliser le vecteur direction mais ici own.orientation fournit déjà un vecteur normalisé). Ensuite, on voit que ça va un peu trop vite. On va donc régler la vitesse de déplacement avec une variable speed. On l'applique au vecteur direction. A noter que si cette variable est négative, on "recule", ce qui est plus intuitif qu'un "Vector((0, -0.1, 0))". Donc on a à la fois la direction et la vitesse de déplacement, mais elles sont découplées pour les rendre claires et intuitives.
Contribution le : 15/08 18:02:04
|
|
_________________
Développement en cours du hARMful Engine |
||
![]() ![]() |
|
Re: Character wrapper - code python |
|
---|---|---|
OverdOzed
![]() ![]() Inscrit:
23/02/2006 19:10 De Sideula
Post(s): 2051
|
Content que ça soit résolu ! Mais je n'ai rien fait du coup.
Pour ton souci de monture, je n'ai pas vraiment d'idée mais des indices me laissent penser à une chose. Éventuellement, le problème est que tu tentais d'accéder à ta monture avant qu'elle ne soit effectivement créée / accessible pour Python. Dans ce cas, ça serait une valeur inexistante et Python ne saurait pas définir le type de donnée associée, d'où le fait qu'il gueulerait sur le typage non "float". Ton joueur est, quant à lui, accessible puisque déjà créé à l'initialisation du jeu. Mais ça ne reste que spéculation au vu des informations que tu as fournies. Cette théorie est toutefois renforcée par le déplacement du code qui donne un bon fonctionnement. Peut-être que tu as mis le code à un endroit où ça tombe bien car la création des données de la monture s'est faite avant. Ne connaissant pas le code ni la structure du programme, je ne peux pas aller plus loin dans le raisonnement.
Contribution le : 17/08 23:31:13
|
|
_________________
Développement en cours du hARMful Engine |
||
![]() ![]() |