Bonjour!
Je viens vers vous car j'ai déniché un script de trigonométrie et j'aimerais le comprendre...
Voila le contexte, il s'agit d'un script qui permet de créer des objets au bon endroit dans un jeu, sachant que l'objet créé apparait 10 mètres devant soi.
Je n'ai pas eu trop de problème en trigonométrie pour des objets qui je plaçais en 2D mais en 3D c'est une autre histoire...
Dans tous les cas je connais l'emplacement de l'objet que je souhaite positionner.
Exemple:
pos = (145.0, 5.2, -45.8) #(x,y,z) (x étant l’abscisse, y l'ordonnée ou la hauteur dans le jeu, z la profondeur)
rot = (45.0, 45.0, 0.0) #(a,b,c) (a étant la rotation "cardinale", b l'inclinaison, c toujours égale à 0)
Le but du script est de mettre le joueur au bon endroit et avec la bonne inclinaison pour que l'objet apparaissent au bon endroit avec la bonne rotation, sachant qu'il faut qu'il soit placé à 10m de lui...
Dans le script qui suit j'aimerais comprendre c'est deux règles :
Voila, voila si quelqu'un pouvait m'aider je lui en serait reconnaissant, sinon je l'utiliserais bêtement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nZ = math.cos(math.radians(rot[0]))*math.cos(math.radians(rot[1]))*r nX = nZ / math.tan(math.radians(90.0 - rot[0]))
Cdt!
LeNa
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import host import bf2 import math # Spawn objects with correct position / rotation # Objects are always spawned 10m away from the active player # Freeze-18 def coordSpawn(obj, pos, rot): r = 10 nY = math.sin(math.radians(rot[1]))*r nZ = math.cos(math.radians(rot[0]))*math.cos(math.radians(rot[1]))*r nX = nZ / math.tan(math.radians(90.0 - rot[0])) nPos = (pos[0]-nX,pos[1]+nY,pos[2]-nZ) vs = [] op = [] for x in bf2.playerManager.getPlayers(): v = x.getVehicle() vs.append(v) op.append(v.getPosition()) v.setPosition(nPos) v.setRotation(rot) host.rcon_invoke("ObjectTemplate.active " + obj) host.rcon_invoke("ObjectTemplate.setNetworkableInfo BasicInfo") host.rcon_invoke("gameLogic.createObject " + obj) i = 0 for o in vs: o.setPosition(op[i]) i = i + 1 coordSpawn("bp1_statue_angel", (-425.0, 25.8, 90.0), (0.01, 0.0, 0.0))
Partager