• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

AO scripten mit verlangsamter Bewegung

Hallo zusammen
Ich versuche seit geraumer Zeit einen AO zu scripten, der in einem Attachment liegt.
Es solle allerdings nicht nur der Walk ausgetauscht werden, sondern er soll auch verlangsamt werden.
Ausprobiert hatte ich das über Tasttaturabfrage, Kamararichtung auslesen und llMoveTo.
Doch bisher ist es mir aber nicht gelungen ist, die Z Achse, also höhe über Grund vernünftig zu integrieren, bzw einfach zu ignorieren.
Bin nicht sicher ob das überhaupt ein vernünftiger Ansatz ist, bin langsam am verzweifeln.
Falls also jemand eine Idee hat, oder sowas schon mal gescripted hat und sein Wissen teilen mag.. Ich bin für jede Hilfe dankbar !!

gruß Jacky
 
Also ich hab vom Scripten keine Ahnung, aber weiß folgendes über Animationen: Ein AO überlagert nur die eingebauten Animationen, ändert aber nichts an der Bewegungsgeschwindigkeit. Langsamer gehen kann man nur, wenn du Ducken aktivierst, und schneller durch Laufen. Beliebige Geschwindigkeiten gehen nur mit einem Fahrzeug. Die Höhe einer Animation kann man in der Animationsdatei festlegen.
 
Es gibt keine Anweisungen, um die Geschwindigkeit einer Ani zu ändern. Es sei denn es gibt neue. Weiss jetzt auch nicht so recht, was die Höhe damit zu tun hat oder wie du das meinst.
LG Reb
 
Die "Geschwindigkeit" der Ani (fps) wird im Animationsprogramm festgelegt, und klar kann man die hinterher auch ändern. Das muß das Programm nur können. Das hat mit der Gehgeschwindigkeit in SL aber nichts zu tun. Die Gehgeschwindigkeit ist immer gleich, und die kann man messen. Ich glaube das sind so 12 kmh (also viel zu schnell eigentlich, dazu bräuchte man in RL schon ein Fahrrad). Laufen ist noch schneller, und Ducken etwas langsamer. Die Höhe der Animation hängt von der Position der Hüfte ab. Man kann einen Ava zb. über dem Boden schweben lassen.
 
Danke erst mal für die Beiträge.
Also, es ist mir schon klar , das die Animationsgeschwindigkeit wärend der Erstellung festgelegt wird. Nun habe ich eine Animation erstellt, die mit der normalen SL walk
geschwindigkeit nicht passt, sondern sie erfordert das sich der Avatar langsamer bewegt . Ergo muss ich die normale Bewegung ausstellen, bzw überschreiben.
Die Höhe hat in so weit damit zu tun , das sie nätürlich nicht aus de Camerarichtung (view) Richtung ausgelesen werden soll, sondern immer vom Boden abhängig sein muss.
Wenn ich leicht nach oben schaue, dann will ich zwar vorwärtsgehen, aber nicht vom boden abheben. Ich kenne mich recht gut mit "normalen" Animationen in SL aus,
also, abhänigkeit der Höhe von der Position des Pelvis, geschwindigkeit, etc. Das Problem liegt (meiner Meinung nach) rein im scripten.
Also, die Kontrolle über die Bewegungstasten zu übernehmen, die Richtung ermitteln, und den Avatar irgendwie (llMoveTo zB ) in diese Richtung bewegen und dabei die Geschwindigkeit selbst zu bestimmen.

gruß Jacki
 
Ich glaube, das ginge nur über ein Objekt auf dem der Avatar drauf sitzt. Das könnte man dann mit den Pfeiltasten steuern. Die Avatarsteuerung zu überschreiben geht, glaube ich, nicht.

Edit:
Ich glaube diese Hochzeitswalks funktionieren so.
 
Musst Du Dir einen Poseball scripten, der sich wie ein Fahrzeug dann steuern lässt. Dann gehen auch verschiedene Geschwindigkeiten und auch die Höhe des Landes wird berücksichtigt.
 
Also, es soll, und muss definitv nichts zum draufsetzen sein.

Aussehen tut es bisher so

________________________________________

#

float x = 0.0;
float y = 0.0;
float z = 0.0;
float s = 1.0;


vector campos;
rotation camrot;

vector movement;



vector position;
vector positionold;
rotation target;

integer on_ground;

default

{

state_entry()

{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION | PERMISSION_TRACK_CAMERA); // Rechte erhalten, Steuerung
}


attach(key AvKey)
{
movement = <0,0,0>;
position = llGetPos();
positionold = llGetPos();

if (AvKey != NULL_KEY)
{
llRequestPermissions(AvKey, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION | PERMISSION_TRACK_CAMERA); // Rechte erhalten, Steuerung
llStartAnimation("Tablet stand_01");
}

if (AvKey == NULL_KEY)
if(llGetPermissionsKey() != NULL_KEY)
llStopAnimation("Tablet stand_01");
}

collision(integer num_detected)
{
on_ground=1;
}


land_collision(vector pos)
{
on_ground=1;
}


run_time_permissions(integer perm) //Rechte dialog beantwortete
{

llSetTimerEvent(0.8);
if(perm & PERMISSION_TAKE_CONTROLS) // erhielten wir ein ja
{
llTakeControls(CONTROL_FWD | CONTROL_BACK, TRUE, FALSE); // nehmen vor und zurück Steuerungstasten
}
}


control(key id, integer held, integer change) // etwas geschah bis eine unserer Steuerung
{
position = llGetPos();
positionold = llGetPos();
camrot = llGetCameraRot();
movement = llRot2Fwd(camrot) * 0.4;

if ( on_ground )
{
if (held & CONTROL_FWD ) // die „Vorwärts“ Taste wird gehalten
{
llStartAnimation("Tablet walk_01");
position = position + <movement.x, movement.y,0>;
llMoveToTarget(position,0.2);
}

else
if (held & CONTROL_BACK) // die „Rückwärts“ Taste wird gedrückt
{
llStartAnimation("Tablet walk_01");
position = position - <movement.x, movement.y,0>;
llMoveToTarget(position,0.2);
}

if (~held & change & CONTROL_FWD)
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
}

if (~held & change & CONTROL_BACK)
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
}
}

else
{
llStopAnimation("Tablet walk_01");
llStartAnimation("Tablet stand_01");
llStopMoveToTarget();
}

}

link_message(integer snum,integer posnum,string chain,key id)
{
if(posnum == 99 && chain == "reset")
{
llWhisper(0,"Script AO reset");
llResetScript();
}
}

timer()
{
llStopMoveToTarget();
on_ground=0;

}

changed(integer mask)
{
if(mask & CHANGED_TELEPORT)
{
llStartAnimation("Tablet stand_01");
}

if(mask & CHANGED_OWNER)
{
llResetScript();
}

}

}

#
________________________________

Ist aber meines erachtens nicht so gut gelöst mit der Kollisionsabfrage.
Hackelt auch sehr oft, da das llStopAnimation das beim nicht drücken der Vorwärtstaste ausgelöst werden soll. auch trotz Drückens ab und an ausgelöst wird. SL liest da wohl nicht jeden Tastendruck oder macht selber pausen.
Aber alles in allem bin ich mir sicher das es da einen besseren Weg geben muss. zB das man die Z achsen werte einfach ignoriert, oder rauslässt oder so..

Ach ja, wie fügt man Script so hier ein, daß es als script erscheint ? Hab das mit den Codetags nicht richtig hinbekommenund auch die Formatierungsbuttons nicht gefunden



gruß Jacky
 
Ach ja, wie fügt man Script so hier ein, daß es als script erscheint ? Hab das mit den Codetags nicht richtig hinbekommenund auch die Formatierungsbuttons nicht gefunden

Über diesem Editfenster ist alles was du brauchst, vor allem die Raute zaubert dir die Code-Tags gleich automatisch auf den Bildschirm. Brauchst nur noch den Code dazwischenpappen.

Gruß,
Bo
 
Aber stimmt Jaquline hast recht. Die Flugoptimzer überschreiben ja auch Avatarbewegungen. Also muss es wohl möglich sein.

Mal ein Denkanstoß, viel mir nämlich gerade ein.
Es gibt ja eine Funktion, welche dir ausgibt ob der Avatar läuft, fliegt, schimmt(auch?).
Jeder AO funktioniert ja so. Brauchst du denn da die Tastenabfrage? Denn wenn wer die Bewegungstasten drückt, würde die Funktion ja ausgeben: Der Avatar läuft jetzt. An der Stelle könntest du dann Animation und Bewegung überschreiben.
Wie gesagt, nur eine grundsätzliche Idee. Bei llMoveto und Achsen, vielleicht noch Vektoren? O.O und so kann ich dir nicht helfen, bin ich ne null drin :|
 
Hm, danke für den Vorschlag, aber wie "zwinge" ich eine Avatar mit einem Attachment ins crouch, bzw ist das nicht nur eine Ani, und die Geschwindigkeit die gleiche wie beim laufen ?

gruß Jaquline
 

Users who are viewing this thread

Zurück
Oben Unten