Hey, ich habe mal eine Frage zu einem Online-Workshop. Meine Frage bezieht sich auf dieses Script hier: Woher weiß die Engine, dass sie in dem Level die Zauberer aufleuchten lassen soll? Also in dem Level gibt es ein Haus davor sind 2 Zauberer und wenn man die mit der Maus berührt, leuten sie. Und wie weiß die Engine jetzt, dass es die Zaubere sind die sie aufleuchten lassen soll?
function highlight_event() { if (event_type == EVENT_TOUCH) // the wizard was touched with the mouse? { my.ambient = 100; // the make it look bright my.lightrange = 100; // and generate light on a radius of 200 quants! } else // the wizard isn't touched anymore { if (event_type == EVENT_RELEASE) // the mouse was moved away from it? { my.ambient = 0; // then restore its initial ambient value (zero) my.lightrange = 0; // and stop it from generating light around it } } }
action wizard_lights() // this action is attached to both wizards { // make the wizard models sensitive to mouse touching and releasing my.emask = ENABLE_TOUCH | ENABLE_RELEASE; // run function highlight_event the wizards are touched or released my.event = highlight_event; }
Ja, das Programmieren ist schwer und zerreißt einem manchmal den Kopf. Aber dran bleiben ist alles dann kommt man auch weiter.
Ist ja alles im Code beschrieben. Was genau verstehst du nicht?
Wenn der Mauszeiger einen Zauberer berührt, wird der event ausgeführt, wobei der me/my Pointer auf den Zauberer zeigt, der berührt wird. Es gibt auch noch einen you - Pointer, der zum Beispiel für Kollisionen gebraucht wird und auf die Entity zeigt, mit der man kollidiert ist.
Re: Woher weiß die Engine was sie da machen soll?
[Re: Widi]
#307755 01/31/1013:4201/31/1013:42
Ja ja, diese verflixten Pointer, da hatte ich am Anfang auch meine Mühe. Die sind aber total wichtig hier in 3dgs, ohne die geht garnix. Wünsche dir noch viel Spass beim Workshop...
Re: Woher weiß die Engine was sie da machen soll?
[Re: Widi]
#308221 02/02/1012:1102/02/1012:11
das mit den pointern ist wirklich so ne sache, muss dort nach langen pausen auch immer wieder mit herum probieren. glaube aber eher dass du hier das gleiche problem wie ich damals mit den actions hast. die actions geben verhaltensweisen usw vor. wenn du mehrere objekte einer action zuweist, verhalten sich die objekte dennoh nicht gleich. klingt in erster linie blöd sagt aber folgendes aus: jede figur die du über actions steuerst werden nur nach dem gleichen verhaltensmuster von der engine verarbeitet, wenn dort bedingungen vorhanden sind (wie hier der mauscurser über dem objekt) wird das ganz nur ausgeführt wenn der mauscurser auch tatsächlich über dem einzelnen objekt ist.
das ganze ist mir extrem aufgefallen, als ich mal versucht habe die steuerung eines charakters mit zweiübereinander liegenden objekten gleichwertig auszuführen. beide objekte hatten eine verzögerung, die dann nur durch externe steuerung von variabeln (ausserhalb der action) verhindert werden konnte. ist also die definition für die komplette action in der hauptfunktion zu 100% geregelt und ist an keine bedingungen mehr geknüpft sollten auch alle objekte gleich funktionieren.
nun abern och mal zum thema. der my-pointer steht in der action eigentlich immer separat für das objekt, dem die action zugewiesen wurde. ist alles in allem nur eine vereinfachung, dass du nicht für jedes objekt eien action schreiben musst, obwohl sie vollkommen gleich funktionieren (sonst müsstest du imerm den genauen objekt-pointer benutzen)
Re: Woher weiß die Engine was sie da machen soll?
[Re: Fab4]
#308231 02/02/1012:5402/02/1012:54