"puis irait se poser quelque part peu importe": cela implique donc un détachement non?
Sinon, il est possible d'animer le(s) "child(ren)" d'un objet porté, dont le "root" attaché à un endroit du corps, serait fixe (et par exemple invisible).
Exemple: tu lies 2 cubes: l'un est "root" (en jaune quand on l'édite), l'autre est "child" (en bleu) .
Tu glisses ces deux scripts dans le "child":
L'un concerne les translations:
default
{
on_rez(integer r)
{
llResetScript();
}
link_message(integer s, integer n, string m, key id)
{
if(m=="position0"){
vector translation=<0.18967, -1.94633, 0.00000>;
llSetPrimitiveParams([6, translation]);
}
if(m=="position1"){
vector translation=<0.18967, -1.94633, 2.02570>;
llSetPrimitiveParams([6, translation]);
}
if(m=="position2"){
vector translation=<-2.54750, -1.94633, 2.02570>;
llSetPrimitiveParams([6, translation]);
}
if(m=="position3"){
vector translation=<-2.54750, 2.09348, 2.02570>;
llSetPrimitiveParams([6, translation]);
}
if(m=="position4"){
vector translation=<3.01468, 3.09348, 3.02570>;
llSetPrimitiveParams([6, translation]);
}
}
}
L'autre les rotations (relatives au prim root):
default
{
on_rez(integer r)
{
llResetScript();
}
link_message(integer s, integer n, string m, key id)
{
if(m=="position0")
{
llSetLocalRot(<0.00000, 0.00000, 0.00000, 1.00000>);
}
if(m=="position1")
{
llSetLocalRot(<0.00000, 0.36650, 0.00000, 0.93042>);
}
if(m=="position2")
{
llSetLocalRot(<0.25037, 0.00844, 0.00218, 0.96811>);
}
if(m=="position3")
{
llSetLocalRot(<0.20025, 0.15052, 0.55707, 0.79178>);
}
if(m=="position4")
{
llSetLocalRot(<0.40025, 0.55052, 0.55707, 0.69178>);
}
}
}
A toi de changer les translations/rotations selon tes besoins et de multiplier les "positions" si nécessaire: ce n'est qu'un exemple avec 5 positions.
Maintenant, un script "play on touch" que tu mets dans le root:
float delai=0.5;
default
{
on_rez(integer r)
{
llResetScript();
}
state_entry(){
llMessageLinked(LINK_SET,2,"position0","");
}
touch_start(integer total_number)
{
llMessageLinked(LINK_SET,2,"position1","");
llSleep(delai);
llMessageLinked(LINK_SET,2,"position2","");
llSleep(delai);
llMessageLinked(LINK_SET,2,"position3","");
llSleep(delai);
llMessageLinked(LINK_SET,2,"position4","");
llSleep(delai);
llMessageLinked(LINK_SET,2,"position0","");
llResetScript();
}
}
Il ne te reste qu'à porter ton objet, cliquer sur lui quand tu veux actionner le mouvement.
Je ne sais pas du tout si ce genre d'"animation" correspond à ce que tu veux faire (et je suppose qu'il existe une façon moins laborieuse de l'écrire).