Thema: Luftschiff fliegt nicht Do Apr 02, 2009 7:17 pm
Ich versuche ein Luftschiff zu machen, das viel größer ist als das normale, und eine größere Solide Mask haben soll. Die Drehung des normalen Luftschiffes habe ich rausgeschnitten, da es keine Drehsequenz gibt(bin zu faul dazu). Dabei gibt es einige Probleme: 1. Die solid Mask bleibt bei der Drehung vorhanden. Man läuft quasi in der Luft und sinkt durch festen Bestandteil. 2. Bei der Drehung "holpert" es. Das Luftschiff dreht sich immer wieder zurück und vor innerhalb einer Sekunde.
Hier die Graphics:
Und das Skript ist das Skript des Luftschiffes, ohne die Drehfunktion(also die verzögerte Drehung)
private func SetDirection(int comdir) { // Richtungsaenderung nach oben/unten geht auch mit "Turn", aber eine // ComDir-Aenderung, die wieder eine Turn-Action erfordern wuerde muss // warten, bis die jetzige Turn-Action fertig ist. if(GetAction() S= "Turn") { turn_end_dir = comdir; if(comdir == COMD_Stop || (ComDirLike(comdir, COMD_Right) && GetDir() == DIR_Left) || (ComDirLike(comdir, COMD_Left) && GetDir() == DIR_Right)) { return(0); } }
// ComDir uebernehmen SetComDir(comdir);
// Angebrachte Action setzen if(GetAction() ne "Turn" && GetAction() ne "WaterLaunch") { if(comdir != COMD_Stop && GetAction() ne "FloatPropel") SetAction("FloatPropel"); if(comdir == COMD_Stop && GetAction() ne "FloatIdle") SetAction("FloatIdle"); }
// Vorherige ClearDirs wegtun ClearScheduleCall(this(), "ClearDir"); // Wenn Bewegung in nur eine Richtung, dann Bewegung in die andere // Richtung aufgeben (macht FLOAT-Prozedur nicht automagisch) if(comdir == COMD_Down || comdir == COMD_Up) ScheduleCall(this(), "ClearDir", 1, Abs(GetXDir()), true); if(comdir == COMD_Left || comdir == COMD_Right || comdir == COMD_Stop) { ScheduleCall(this(), "ClearDir", 1, Abs(GetYDir()), false);
// Bei Bewegung nur in X-Richtung ein wenig schaukeln if(!GetEffect("IntWindYDir", this())) AddEffect("IntWindYDir", this(), 1, 10, this()); } else { if(GetEffect("IntWindYDir", this())) RemoveEffect("IntWindYDir", this()); }
// Beim Landen auf COMD_Down lassen, sonst hopst das Luftschiff schnell // wieder in die Luft if(comdir == COMD_Stop && GBackSolid(0, GetObjHeight()/2+2)) SetComDir(COMD_Down); }
private func CheckCommandAction() { // Propeller an für Kommando if (GetCommand()) if (GetAction()S="FloatIdle") SetAction("FloatPropel"); // Wenden nach rechts if (GetAction() eq "FloatPropel") if (Inside(GetComDir(),COMD_UpRight,COMD_DownRight)) if (GetDir()==DIR_Left) { SetAction("Turn"); SetDir(DIR_Right); return(true); } // Wenden nach links if (GetAction() eq "FloatPropel") if (Inside(GetComDir(),COMD_DownLeft,COMD_UpLeft)) if (GetDir()==DIR_Right) { SetAction("Turn"); SetDir(DIR_Left); return(true); } // Anhalten wenn Ziel erreicht if(!GetCommand() && !GetComDir()) SetDirection(COMD_Stop); return(0); }
private func NoPilotCheck() { if (!FindObject(0,0,0,0,0,0,"Push",this())) return(FloatIdleDown()); return(0); }
protected func RejectCollect(id idObject, object pObj) { // Pfeile vertragen sich nicht mit einem Luftschiff if (DefinitionCall(idObject,"IsArrow") ) // Nur, wenn der Pfeil sich auch bewegt if(GetXDir(pObj) || GetYDir(pObj)) { // bei brennendem Pfeil anzünden if(OnFire(pObj)) Incinerate(); // ansonsten abstürzen else SetAction("DropOff"); // in jedem Fall im Pfeil Hit auslösen (Sprengpfeil explodiert zB) ProtectedCall(pObj, "Hit"); return(1); } return(1); }
/* Angriff durch Vögel */
public func Poke() { Sound("Rip"); SetAction("DropOff"); return(1); }
Alter : 31 Ort : Brunswiek *helllau* Anmeldedatum : 24.01.08
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 7:25 pm
Zitat :
1. Die solid Mask bleibt bei der Drehung vorhanden. Man läuft quasi in der Luft und sinkt durch festen Bestandteil.
Füge einmal die SolidMask gespiegelt in die Grafik ein (so dass du beide Seiten hast) und nutze nach der Wendung/bei der Wendung SetSolidMask()
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 7:29 pm
Ok, dann wäre das erste Problem erledigt. Doch irgendwie dreht sich das ganze ja nicht. Schwer zu erklären, aber es wendet sich immer nach rechts und links. Und das 5x pro Sekunde. Müsstes es euch mal selbst anschauen.
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 8:40 pm
Wenn du das Object als Ganzes irgentwo Hochladen würdest werde ich es mir mal ansehen.
mfg Toastbrot
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 8:45 pm
Vlt. auch noch die Actmap.
Mega Hazard Staatsrat
Alter : 31 Ort : Brunswiek *helllau* Anmeldedatum : 24.01.08
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 8:51 pm
Btw, ihr beiden, es ist schon hochgeladen...
Gamer Staatsrat
Alter : 28 Ort : In einem kleinen Dorf in Unterfranken (Bayern) Anmeldedatum : 10.02.09
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 8:59 pm
Ups. Das steht ja ganz da unten nach diesen 1ne Milliarden Zeilen Script!
Toastbrot Kadett
Anmeldedatum : 10.03.09
Thema: Re: Luftschiff fliegt nicht Do Apr 02, 2009 10:11 pm
Das das so Ruckelt liegt wahrscheinlich daran das die Grafikkordianaten nicht ganz richtig liegen,dass solltest du dir noch mal angucken. Das es sich nicht bewegt liegt daran das einige Vertises so liegen das sie sich in der eigenen Solid-Mask verfangen. Ich habs mal ohne die Vertises probiert und es klappte
Sind Vertexe überhaupt notwendig? Den Skript wollte ich ja sowieso in nem Spoiler machen, aber die Funktion ist bei mir nicht vorhanden.
EDIT: Vertexe neu positioniert. SetSolidMask eingefügt, Grafik geändert. Einiges hat sich getan. Nur fliegt es nicht richtig. eben nur nach links, doch rechts geht nicht wirklich. Habs nochmal hochgeladen: Airship Version 2
Ja, Vertice(müsste glaub ich der richtige Plural von Vertex sein) sind sehr wichtig, das sind ja die Punkte, an denen das Objekt aufliegt. Ohne sie würde das Objekt einfach durch die Landschaft fallen.
Na gut Vertices sind neu festgelegt, so dass sie sich nicht mehr mit der SolidMask in die Haare kriegen. Allerdings fliegt das Schiff nun nicht nach rechts. Es dreht sich nach rechts, fliegt aber nicht mehr weiter. An was könnte das Problem liegen?
Ist das Luftschiff nach Rechts gedreht kommt immer noch ein Vertex mit der Solid-Mask in konflikt. Am besten du drückts mal während des Spiels erst [F5]+[Alt] (Debug-Modus) und dann [F6]+[Alt](Vertice und Entrances anzeigen.) Dann siehts du das die Linke mittlere Vertex in der SolidMask steckt.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 10:13 am
Aus irgendeinem Grund werden einfach nur alle Flächen einheitlich dargestellt, und Vertece zeigen sich gar nicht. Ok, dann noch einen Vertex umpositionieren. Was für Nutzen haben eigentlich Kollisionsfreie Vertece? Sie fliegen durch die Landschft als ob gar nichts da wäre. Mir ist der Sinn dieser vollig unbekannt. Kann mir die einer erklären?
Simsi Staatssekretär
Alter : 31 Ort : Vaihingen/Enz Anmeldedatum : 30.03.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 11:58 am
Beim attachen (ausrichten von objekten an anderen) werden vertices aneinander ausgerichtet (z.b. vertex 1 von objekt 1 an vertex 7 von objekt 2). will man nun dass dies nur positionsgeber sind kann man sie kollisionsfrei machen. ich glaub beim drache ist das so einer, nämlich immer da wo der magus sitzen soll.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 12:15 pm
Ok, also werden kollisionsfreie eigentlich nur zum ausrichten benutzt. Ok, dann müsste das Schiff ja funktionieren wenn ich den Vertex ändere. Und wie müssen bei den Clonks die Vertices ausgerichtet sein, damit er gut läuft? bei dein meisten eigenen, können die nicht richtig klettern oder stolpern ab und zu auf der Erde. Werden da auch kollisionsfreie benutzt und klappt es besser wenn ich den CNAT jeweils 2 Richtungen zuweise? Z.B. oben-rechts, oben, oben-links- links-mitte,...
Und wozu ist die Reibung da? Also VertexFriction? Sorry, für die vielen Fragen, aber ich finde die in der Doku nirgends.
Umezawa Feldmarschall
Alter : 29 Anmeldedatum : 30.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 12:36 pm
Friction ist wie leicht (also bei welcher Schrägstellung des Untergrundes) ein auf dem entsprechenden Vertex aufliegendes Objekt abrutscht.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 12:42 pm
Also sind niedrige Frictions besser?
Umezawa Feldmarschall
Alter : 29 Anmeldedatum : 30.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 2:38 pm
Niederige Frictions rutschen besser, was besser ist, hängt vom Objekt ab.
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht Sa Apr 04, 2009 5:01 pm
Warum wurden im Clonk selbst, hohe Frictions verwendet? Da müsste der doch bei Erde leicht stolpern?
Umezawa Feldmarschall
Alter : 29 Anmeldedatum : 30.12.08
Thema: Re: Luftschiff fliegt nicht So Apr 05, 2009 2:01 pm
Es geht ja nur ums rutschen, also bei welcher Schräge er anfängt zu rutschen. Bei der WALK Prozedur rutscht er ja nicht, er geht. Du kannst ja auch besser ohne Butter unter den Schuhen laufen als mit, oder?
Bowserkoopa Staatsrat
Alter : 30 Anmeldedatum : 21.12.08
Thema: Re: Luftschiff fliegt nicht So Apr 05, 2009 3:32 pm
Am Vertex welcher unten ist, sollte ich also z.B. VertexFriction=0 setzen?