Se relier à un objet en mouvement ou comment voler
3 participants
Page 1 sur 1
Re: Se relier à un objet en mouvement ou comment voler
J'ai un peu modifié la fonction Suivre() expliquée avant, car l'ancienne version ne tenait compte de la rotration de l' avatar que selon un axe. Ici, on peut le faire tourner dans les 3 directions x, y et z de -180 ° à + 180 °.
D'autre part j'ai ajouté la liaison à 3 autres animaux : l'Urwin et le Monkey de Negilahn et le Sandscrit de Payiferen.
Voici le code :
La fonction SCOAvatar(Avatar) n'a pas été modifiée.
Je vais ouvrir une nouvelle page afin de rassembler le tableau des objets par âge de manière à ce que vous les trouviez plus facilement
D'autre part j'ai ajouté la liaison à 3 autres animaux : l'Urwin et le Monkey de Negilahn et le Sandscrit de Payiferen.
Voici le code :
- Code:
def Suivre(objet='',Avatar='moi',duree=30):
"""Attacher un avatar sur un objet en mouvement dont la taille est xxx %
et le suivre durant xx secondes puis atterrir au point par defaut"""
if (objet.lower()) == 'oiseaur1' :
# oiseau 1 du Relto
defobjet = ("Personal,psnlMYSTII,DCSoarBird01,0,0,180")
elif (objet.lower()) == 'oiseaur2' :
# oiseau 2 du Relto
defobjet = ("Personal,psnlMYSTII,DCSoarBird03,0,0,180")
elif (objet.lower()) == 'papillonr' :
# Papillon du Relto
defobjet = ("Personal,psnlMYSTII,ButterflyVertPos11,0,0,0")
elif (objet.lower()) == 'luciolesr' :
# Lucioles du Relto
defobjet = ("Personal,psnlMYSTII,BugFlockingEmitTest,0,0,0")
elif (objet.lower()) == 'oiseauc1' :
# oiseau 1 de Cleft
defobjet = ("Cleft,Desert,DCSoarBird01,0,0,180")
elif (objet.lower()) == 'oiseauc2' :
# oiseau 2 de Cleft
defobjet = ("Cleft,Desert,DCSoarBird03,0,0,180")
elif (objet.lower()) == 'oiseaut1' :
# oiseau 1 de Teledahn
defobjet = ("Teledahn,tldnHarvest,BBHead,0,0,-90")
elif (objet.lower()) == 'oiseaut2' :
# oiseau 2 de Teledahn
defobjet = ("Teledahn,tldnHarvest,BBHead01,0,0,0")
elif (objet.lower()) == 'shooter1' :
# Shooter 1 de Teledahn
defobjet = ("Teledahn,tldnHarvest,ShooterB-Master,0,0,0")
elif (objet.lower()) == 'shooter2' :
# Shooter 2 de Teledahn
defobjet = ("Teledahn,tldnHarvest,ShooterC-Master,0,0,90")
elif (objet.lower()) == 'shooter3' :
# Shooter 3 de Teledahn
defobjet = ("Teledahn,tldnHarvest,ShooterD-Master,0,0,0")
elif (objet.lower()) == 'shooter4' :
# Shooter 4 de Teledahn
defobjet = ("Teledahn,tldnHarvest,ShooterF-Master,0,0,0")
elif (objet.lower()) == 'shooter5' :
# Shooter 5 de Teledahn
defobjet = ("Teledahn,tldnHarvest,ShooterH-Master,0,0,0")
elif (objet.lower()) == 'raie1' :
# Raie 1 de Dereno
defobjet = ("Dereno,DrnoExterior,C01_Body,0,0,0")
elif (objet.lower()) == 'raie2' :
# Raie 2 de Dereno
defobjet = ("Dereno,DrnoExterior,C02_Body,0,0,0")
elif (objet.lower()) == 'poissond' :
# Poisson de Dereno
defobjet = ("Dereno,DrnoExterior,FishC06,0,0,90")
elif (objet.lower()) == 'poissong1' :
# Poisson 1 de Kemo
defobjet = ("Garden,kemoGarden,FishA,0,0,90")
elif (objet.lower()) == 'poissong2' :
# Poisson 2 de Kemo
defobjet = ("Garden,kemoGarden,FishB,0,0,90")
elif (objet.lower()) == 'poissong3' :
# Poisson 3 de Kemo
defobjet = ("Garden,kemoGarden,FishC,0,0,90")
elif (objet.lower()) == 'bahro' :
# Bahro de l'Arche de la Ville
defobjet = ("city,bahroFlyers_arch,B_ArchBody_01,0,0,0")
elif (objet.lower()) == 'urwin' :
# Urwin de Negilhan
defobjet = ("Negilahn,Jungle,Urwin_Head,0,-90,180")
elif (objet.lower()) == 'singe' :
# Singe de Negilhan
defobjet = ("Negilahn,Jungle,2Tails_Root,0,0,60")
elif (objet.lower()) == 'sandscrit' :
# Sandscrit de Payiferen
defobjet = ("Payiferen,Pod,BoneSSHead,0,-90,180")
animal = defobjet.split(',')
Age = animal[0]
Prp = animal[1]
Objet = animal[2]
Anglex = float(animal[3])
Angley = float(animal[4])
Anglez = float(animal[5])
PtConsoleNet('Nav.PageInNode '+ Prp ,1)
if Avatar == 'moi':
Joueur = PtGetLocalAvatar()
else:
Joueur = Avatars.SCOAvatar(Avatar)
Joueur.netForce(1)
Joueur.physics.netForce(1)
Joueur.physics.disable()
PtSetAlarm(1, Lier(Age,Joueur,Objet,duree,Anglex,Angley,Anglez), 1)
class Lier:
def __init__(self,age,joueur,obj,duree,anglex,angley,anglez):
self._age = age
self._joueur = joueur
self._obj = obj
self._duree = duree
self._anglex = anglex
self._angley = angley
self._anglez = anglez
def onAlarm (self, param):
Aobj = PtFindSceneobject(self._obj, self._age)
Aobj.netForce(1)
Aobj.draw.enable(1)
centreobj = Aobj.getLocalToWorld()
rotx = ptMatrix44()
rotx.makeRotateMat(0, -math.pi * self._anglex/180)
roty = ptMatrix44()
roty.makeRotateMat(1, -math.pi * self._angley/180)
rotz = ptMatrix44()
rotz.makeRotateMat(2, -math.pi * self._anglez/180)
self._joueur.physics.warp(centreobj * rotx * roty * rotz)
PtAttachObject(self._joueur, Aobj,1)
PtSetAlarm(self._duree, Delier(self._age, self._joueur, Aobj), 1)
class Delier:
def __init__(self,age,joueur,obj):
self._age = age
self._joueur = joueur
self._obj = obj
def onAlarm (self, param):
PtDetachObject(self._joueur,self._obj,1)
Robj=PtFindSceneobject('LinkInPointDefault',PtGetAgeName())
centreobj = Robj.getLocalToWorld()
self._joueur.physics.warp(centreobj)
self._joueur.physics.enable(1)
La fonction SCOAvatar(Avatar) n'a pas été modifiée.
Je vais ouvrir une nouvelle page afin de rassembler le tableau des objets par âge de manière à ce que vous les trouviez plus facilement
V@-Michel- Admin
- Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique
Re: Se relier à un objet en mouvement ou comment voler
Bonne nouvelle. Je suis arrivé à faire voler des avatars sur les 6 Bahros de la ville. Attention, je précise bien qu'il ne s'agit pas de ceux autour de l'Arche (çà c'était déjà fait) mais ceux qui apparaissent lorsque quelqu'un se connecte à la ville.
J'ai bien entendu ajouter ces Bahros dans ma fonction suivre()
Voici le code supplémentaire à cette fonction suivre():
Pour ces bahros, le vol est limité au parcours que chacun effectue avant de disparaître. Il est de plus ou moins 30 secondes pour tous sauf le 3 qui lui est plus long : 60 secondes.
Donc, par exemple pour lancer Michel sur le bahro 3 de la ville je tape :
Suivre('bv3','Michel',60)
Voici quelques images:
Je vous garanti un effet très spectaculaire sur celles et ceux que vous enverrez sur leur dos, et sur vous-même également !
J'ai bien entendu ajouter ces Bahros dans ma fonction suivre()
Voici le code supplémentaire à cette fonction suivre():
- Code:
elif (objet.lower()) == 'bv1' :
# Bahro1 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city1,B01_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity1']=(1,)
elif (objet.lower()) == 'bv2' :
# Bahro2 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city2,B02_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity2']=(1,)
elif (objet.lower()) == 'bv3' :
# Bahro3 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city3,B03_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity3']=(1,)
elif (objet.lower()) == 'bv4' :
# Bahro4 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city4,B04_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity4']=(1,)
elif (objet.lower()) == 'bv5' :
# Bahro5 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city5,B05_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity5']=(1,)
elif (objet.lower()) == 'bv6' :
# Bahro6 de la Ville
sdl=PtGetAgeSDL()
defobjet = ("city,bahroFlyers_city6,B06_BoneSpine3,90,0,90")
sdl["islmS1FinaleBahro"]=(1,)
sdl['islmS1FinaleBahroCity6']=(1,)
Pour ces bahros, le vol est limité au parcours que chacun effectue avant de disparaître. Il est de plus ou moins 30 secondes pour tous sauf le 3 qui lui est plus long : 60 secondes.
Donc, par exemple pour lancer Michel sur le bahro 3 de la ville je tape :
Suivre('bv3','Michel',60)
Voici quelques images:
Je vous garanti un effet très spectaculaire sur celles et ceux que vous enverrez sur leur dos, et sur vous-même également !
V@-Michel- Admin
- Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique
Sujets similaires
» Tableau d'objets en mouvement auquel il est possible de se relier
» Comment se relier à une autre instance que son Relto au moment du lancement du jeu
» Déplacer sur soi ou sur un objet un autre objet déplaçable
» Déplacer son avatar sur un objet d'une prp chargée
» Le coin de V@-Michel
» Comment se relier à une autre instance que son Relto au moment du lancement du jeu
» Déplacer sur soi ou sur un objet un autre objet déplaçable
» Déplacer son avatar sur un objet d'une prp chargée
» Le coin de V@-Michel
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum