Les Voltigeurs d'URU LIVE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
LEGO Icons 10331 – Le martin-pêcheur
35 €
Voir le deal

Se relier à un objet en mouvement ou comment voler

3 participants

Aller en bas

Se relier à un objet en mouvement ou comment voler - Page 2 Empty Re: Se relier à un objet en mouvement ou comment voler

Message  V@-Michel Dim 5 Aoû - 16:15

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 :

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
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Se relier à un objet en mouvement ou comment voler - Page 2 Empty Re: Se relier à un objet en mouvement ou comment voler

Message  V@-Michel Mar 28 Aoû - 22:50

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() Laughing

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:


Se relier à un objet en mouvement ou comment voler - Page 2 Kiimag23


Se relier à un objet en mouvement ou comment voler - Page 2 Kiimag24


Se relier à un objet en mouvement ou comment voler - Page 2 Kiimag25


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
V@-Michel
Admin
Admin

Messages : 1172
Date d'inscription : 13/05/2010
Age : 69
Localisation : Belgique

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum