Achso. Mit einer Kamerabewegung soll er mitgelenkt werden.
Füg in der Funktion _move die Zeile
[autoit]
_IrrSetNodeRotation($SceneNode, 0, 180-$degree, 0)
ein.
Achso. Mit einer Kamerabewegung soll er mitgelenkt werden.
Füg in der Funktion _move die Zeile
[autoit]
_IrrSetNodeRotation($SceneNode, 0, 180-$degree, 0)
ein.
Also, die Kamera ist unabhängig. Dann ist das einfach.
Nimm den Rotationvector. Die Y-Koordinate ist die Drehrichtung um die Y-Achse in Grad.
Und das Mesh soll sich nun in Bewegungsrichtung geradeaus bewegen? In C++ hab ich das so gemacht:
core::vector3df hlpvec = node->getAbsoluteTransformation().getRotationDegrees()*core::DEGTORAD;
core::vector3df speedvec;
speedvec.X = cosf(hlpvec.Y) * speed;
speedvec.Y = sinf(hlpvec.Z) * speed;
speedvec.Z = -sinf(hlpvec.Y) * speed;
In AutoIt müsse das so sein:
[autoit]
global const $DEGTORAD = 4*Atan(1)/180
$player_rot= _irrgetnoderotation($player)
Local $move_x = Cos($player_rot[1]*$DEGTORAD)*$speed
Local $move_y = Sin($player_rot[2]*$DEGTORAD)*$speed
Local $move_z = -Sin($player_rot[1]*$DEGTORAD)*$speed
$player_rot[0] += $move_x
$player_rot[1] += $move_y
$player_rot[2] += $move_z
IrrSetNodeRotation($player, $player_rot)
[/autoit]Wie läuft das denn ab?
Ist die Kamera immer hinter dem Spieler und man kann nur Zoomen?
Ist die Kamera mit der Maus frei beweglich und man steuert mit WASD?
Ich hab da nirgendswo einen Preis gesehen...sowas kann gar nicht Open-Source sein, sonst wär das längst bei mir drauf
Ne. Open-Source doch nicht. Allerdings für nicht komerzielle Projekte wohl kostenlos.
DirectX (.x)
Hast du nicht markiert.
Rollenspiele sind so ziemlich das komplexeste, was es im Bereich Computerspiele gibt. Es muss sehr viel auf gute Story, große Welt, viele Interaktionsmöglichkeiten gesetzt werden. Zudem muss man Entscheidungsmöglichkeiten haben und sich frei mit allem ausrüsten können.
Shooter kann man leichter schreiben. Ein paar Animationen (Laufen, Schleichen, Waffe wechseln, Schießen, Nachladen), einige Waffen. Schon hat man einen Shooter geschrieben. Geht leicht, deswegen wird auch ständig an realistischen Effekten, gutem Gameplay, realistische Physik, guter Grafik, etc gearbeitet. Der Rest geht ja ganz einfach.
Naja die detailtiefe ist ja dennoch beeindruckend , oder hast du schonmal so eine spielegrafik gesehen?
Schonmal so viele gleiche Bäume auf einem Haufen gesehen? Das kann jede Engine, die Instancing unterstützt. Ich halte von der Engine rein gar nichts.
Das mit den eigenen mesh's hinzufügen is eher unpraktisch. die objekte brauchen spezielle skalierungen, dass sie auf die kästchen passen..
Edit: Was bei den Modellen ganz wichtig ist:
Ihr Nullpunkt/origin muss in der mitte des schiffs sein..
Das muss man halt beachten, wenn man neue Meshes einfügt. Die Größen müssen stimmen. Wer falsche Größen einbaut, ist selbst schuld.
Es gibt unterschiedliche Spielregeln.
In meinem Freundeskreis wurde z.B. immer mit Schnellboot (2 Kästchen), Torpedoboot/U-Boot(3 Kästchen), Zerstörer (4 Kästchen), Flugzeugträger (5 Kästchen) gespielt.
Du könntest die Schiffstypen auch in xml-Dateien (oder inis) auslagern. Dann kann jeder selber neue Meshes eintragen, neue Größen definieren, Namen ändern, etc. Man könnte auch unterschiedliche "Mods" zulassen, sodass man je nach ewählter Mod in einer anderen Zeit oder in einer anderen Kultur spielt (z.B. Antike, Wikinger, Hanse, 18.Jh., 1. WK, 2. WK, heute).
Ich hab gesehen, dass "Flutch" aus sehr vielen Polygonen besteht, google mal nach "Euclideon" oder "Unlimited Detail", villeicht kann man das in der Zukunft ja mal einbauen.
Unlimited Detail ist Schwachsinn. Zumindest ist die Argumentation im Video falsch oder zumindest argumentiert er stark einseitig.
Füg es mit ResHacker ein. Du kannst sie mit _Winapi_LoadBitmap, _Winapi_LoadImage und _Winapi_LoadString auslesen.
das ist n guter test, wenn man trausende von klicks mit dem Bot geschafft hat und dann nur Platz 5 oder so wird, weiß man, dass die anderen auch Bots benutzen
Oder das sie sonstwie mogeln. Es gibt ja auch Mäuse mit einer Dreifachklicktaste.
Man könnte die Irrlicht.dll durch die Version 1.7.2 ersetzen.
Es gibt keine neuen Funktionen, es wurde nur Bugs gefixt.
ZitatAlles anzeigenChanges in 1.7.2 (27.10.2010)
- Fix blend mode setup in OpenGL driver, when using the material2d override, as pointed out by Auria
- Fix image creation from texture, found by dataslayer
- Fix crashes when taking Screenhots for DirectX in Windowed mode (thx to agamemnus for reporting)
- StaticText does now serialize the background color
- Fix gui-elements which didn't care when skin-colors changed. That made it impossible to make the gui slowly transparent (thx to PI for reporting).
Note that it couldn't be completely fixed for the SpinBox without breaking the interface, so for that element you have to enforce this by calling for example element->setValue(element->getValue()) once.- Fix CXMLReaderImpl::getAttributeValueAsInt which returned wrong values with large integers (thx to squisher for finding)
- Add EGET_TREEVIEW_NODE_COLLAPSE and deprecate EGET_TREEVIEW_NODE_COLLAPS (found by greenya)
- Fix compile problem in swap when using irrlicht in combination with stl (backport from trunk r3281)- Fix serialization in CParticleSystemSceneNode (found by B@z)
- Prevent crash in BillboardTextSceneNode when a custom font is used. Found and fixed by Nalin (bugtracker id: 3020487)
- Fix problem in animation system that currentFrame got messed up after long pauses (especially when not starting at frame 0).
See forum thread (http://irrlicht.sourceforge.net/phpBB2/viewtop…p=210537#210537) and bug id 2898876.
Also remove BeginFrameTime in CAnimatedMeshSceneNode as it hasn't been used anymore since some time.- Add framerate and current frame information for animations in example 09 and do some minor cleanup.
- Added another test for xml-reader.
- Fix serialization in several particle emitters and affectors (thx to Ion Dune for reporting).
- Fix compile-error on VS for vector2d::getAngleTrig when used with integers. (thx to greenya for reporting)
- Fix bug in dimension2d::getInterpolated that caused wrong results when used with integers as template parameter. (thx to Greenya for noticing a warning which made me look over this code).
- Remove 2 minor memory leaks in meshloaders (found by tool cppcheck-1.43)- reduce file dependencies for IGUIEventReceiver.h (thx ngc92)
- Initialize GUIEvent.Element in several places (found by greenya)
- Add EGDS_MESSAGE_BOX_MAX_TEXT_WIDTH and deprecated EGDS_MESSAGE_BOX_MAX_TEST_WIDTH (thx to greenya for reporting).
- Fix several places where "used" in core::string was used wrongly preventing some memory corruption
- Remove additional slash in pathnames in X-Loader
- Fix crash in CGUIListBox when environment was cleared on events
- Bugfix: Clear up depth-textures which could not be attached in OpenGL to prevent crashes.
- Fix arrowMesh boundingbox.
In AutoIt kannst du auch gleich den passenden Bot dafür schreiben. ![]()
![]()
Hab ich mal bei einem ähnlichen Spiel gemacht und Platz 1 des Tages abgeräumt (aber nur Platz 4 der Woche
).
Statt einer Schleife könnte man auch die
[autoit][/autoit]
StringMid($sString, $iStart, $iCount)
Funktion nutzen.
Nein. StringMid hängt keine Leerzeichen an, wenn der String zu klein ist.
StringFormat ist kompliziert, aber nützlich. Gibt es in fast jeder Sprache.
[autoit]
StringFormat("%-27.*s", $var)
Erklärung:
% bedeutet: Hier wird was eingefügt
- heißt, der Text steht am Anfang und die Leerzeichen werden angehängt.
27 heißt, dass es 27 Zeichen lang wird
. trennt einfach nur die 27 vom nächsten Teil
* steht für Nachkommastellen. Beim String sollte * stehen.
s steht für String
Du musst also Leerzeichen an die Strings anhängen, oder?
[autoit]For $i=StringLen($string) To 26
$string&=" "
Next
Aber.. was sind da jetzt die Parameter...? Was macht das jetzt genau...??
Die Funktion erstellt einen SceneNodeAnimator. Der Animator lässt die Objekte bewegen. In diesem Fall im Kreis.
Der 1. Parameter ist das SceneNode, also die Camera.
Die anderen drei Parameter geben an, um wieviel Grad pro 10 Millisekunden sich die Camera um die X, Y und Z-Achse dreht.
Jetzt weiß ich nicht ganz was ich ändern mss um näher zu sein.. vielleicht der Punkt..??
Was muss ich eigentlich bei _IrrSetCameraTarget( ) als Parameter eingeben? Stimmt es wenn ich den Punkt eingebe auf den die Kamera sehen soll??
Du musst den Punkt in Richtung des Meshes bewegen.
Und Target ist der Punkt auf den die Camera zeigt. Standart ist [0,0,1].
Ind er Irrlichtengine selber wird zum Rotieren um einen Mittelpunkt diese Funktion verwendet:
[autoit]Global $PI = 4*ATan(1)
[/autoit][autoit][/autoit][autoit]Func _Vec3d_RotateXZBy(ByRef $vec, $degrees, Const ByRef $center)
$degrees *= ($PI/180)
Local $cs = Cos($degrees)
Local $sn = Sin($degrees)
$vec[0] -= $center[0]
$vec[2] -= $center[2]
$vec[0] = ($vec[0]*$cs - $vec[2]*$sn)
$vec[2] = ($vec[0]*$sn + $vec[2]*$cs)
$vec[0] += $center[0]
$vec[2] += $center[2]
EndFunc
Müsste das ™ nicht %22%21 (Unicode) oder %99 (ANSI) sein?
Wow
Funktioniert Einwandfrei. Mir fallen nichtmal sinnvolle Verbesserungsvorschläge ein, obwohl mir eigentlich immer irgendwas auffällt. ![]()
![]()
![]()