camera Kollision mit Wand in A7 benötigt

Posted By: chrisp1

camera Kollision mit Wand in A7 benötigt - 11/27/10 16:39

Ok ich wollte mal fragen ob mir jemand weiterhelfen könnte.
Seit geraumer Zeit arbeite ich schon an einem Spiel (little submarine). Der Spieler steuert eine Art comic U-Boot durch eine große Welt und die Kamera verfolgt ihn von hinten. Dazu benutze ich dieses Script (camera2 wurde als View definiert):


vec_set(camera2.x,vector(-150,10,25));

vec_rotate(camera2.x,player.pan);

vec_add(camera2.x,player.x);

vec_set(camera2.pan,vector(player.pan,0,0));

Jetzt zu meinem Problem : Die Kamera folgt dem Player. Wenn der Player aber in die nähe einer Wand fährt so kann man hinter die Wand sehen. Falls es möglich wäre , könnte mir vielleicht jemand sagen wie ich es machen kann, dass die Kamera sobald sie auf die Wand trifft zum Player zoomt , sodass dieser nicht mehr hinter die Wand sehen kann. Wenn sich der Player dann wieder von der Wand wegbewegt sollte die Kamera dann wieder in die Ausgangslage gehen. Hat jemand ein Lösung für das Problem ????? confused
Posted By: Tobias

Re: camera Kollision mit Wand in A7 benötigt - 11/27/10 16:55

Im Prinzip musst du dazu die Kamera mit einem unsichtbaren Modell mitbewegen, z.b. einer Kugel, und diese selbst per c_move bewegen. Dann bleibt die Kugel vor der Wand stehen, wenn sie mit ihr kollidiert.

Ich glaube, in AUM gab es dafür mal einen Code. Ich erinnere mich aber nicht mehr an die Ausgabe.
Posted By: chrisp1

Re: camera Kollision mit Wand in A7 benötigt - 11/27/10 17:11

ok erstmal danke. Ich will zwar nicht das dann das uboot stehen bleibt aber der anzatz ist gut. Ich versuchs mal. Wäre natürlich für leichtere Methoden offen laugh
Posted By: Revo

Re: camera Kollision mit Wand in A7 benötigt - 11/27/10 18:49

alternativ must du halt jeden Frame zur camera tracen und die entfernung in deinen ersten vecot einsetzen ( leichter -> gelcih mit sin() positionioeren wink )

allerdings hast dud ann wieder Probleme, wenn die Kamerabewegung smooth sein soll.

Dann musst du halt doch noch eine Kameraentity einführen oder mit time_step arbeiten (differenzentfernung auf aktuelle aufaddieren)

hab hier z.B. noch ein Strategiespielkamerasscript rumliegen, was auf dem Prinzip basiert, PM falls du es brauchst.
Posted By: chrisp1

Re: camera Kollision mit Wand in A7 benötigt - 11/28/10 10:14

ok ich glaube ich poste mal einen Screenshot damit ihr seht was ich meine. Ich habs schon so Probiert , das ich ein Objekt an der Stelle der Kamera kreire und mit c_trace messe ob ein Objekt dazwischen ist. Das hat nicht ganz geklappt.
Zur erklärung der Bilder. Das erste Bild zeigt einen normalen Ausschnitt aus dem ersten Level. Das zweite zeigt , das man hinter eine Wand sehen kann (rechts unten im Bild). Die Grafik ist übrigens an ein Comicartiges Spiel angelehnt. Kann ja leider mit A7 extra keine Shader verwenden frown
Also es hat zwar noch etliche Bugs aber wenn euch die Bilder nicht reichen , dann könnt ihr euch ja hier die frühe Testversion runterladen www.littlesubmarine.de.to






Posted By: chrisp1

Re: camera Kollision mit Wand in A7 benötigt - 12/12/10 17:40

hat jemand schon ne lösung ?
Posted By: fogman

Re: camera Kollision mit Wand in A7 benötigt - 12/13/10 01:49

Quote:
Ich habs schon so Probiert , das ich ein Objekt an der Stelle der Kamera kreire und mit c_trace messe ob ein Objekt dazwischen ist. Das hat nicht ganz geklappt.


Warum hat das nicht geklappt?
Kannst Du genauer auf das Problem eingehen?
Ein zusätzliches Objekt brauchst Du nicht, einfach die
Kameraposition nutzen.

Falls der Strahl etwas trifft das nicht das U-Boot ist, Kameradistanz verringern.

Falls das U-Boot getroffen wird, Distanz vergrößern (bis zu einem Maximalwert).
Posted By: chrisp1

Re: camera Kollision mit Wand in A7 benötigt - 12/15/10 17:11

ich probiers einfach nochmal . Wahrscheinlich hatte ich irgend einen Fehler gemacht . tongue
Posted By: SQS

Re: camera Kollision mit Wand in A7 benötigt - 12/31/10 09:43

Speicher einfach die originale Distanz in einer Variable und verwende eine andere Variable für die aktuelle Distanz zwischen Kamera und Modell.

Führ' dann c_trace von my.x (my sollte natürlich das U-Boot sein) bis camera.x aus.
Wenn etwas getroffen wurde, verringerst du die aktuelle Distanz um den die Distanz, die durch c_trace ermittelt wurde. Ansonsten setzt du die aktuelle Distanz wieder auf die normale.

Code:
var dist_normal = 400;
var dist_now = 400; //aktuelle Distanz zwischen Kamera und Spieler

function test_camera()
{
camera.x = my.x - dist_now * cos(my.pan);
camera.y = my.y - dist_now * sin(my.pan);
...
c_trace(my.x, camera.x, IGNORE_ME | IGNORE_PASSABLE | IGNORE_MODELS);
if(result != 0)
{
dist_now = result;
}else
{
dist_now = dist_normal;
}
smooth(dist_now, 0.9); //<-- nicht notwendig, wird aber besser aussehen ;)
}


Posted By: chrisp1

Re: camera Kollision mit Wand in A7 benötigt - 12/31/10 12:07

Äh ich habe es jetzt mal probiert und es funktioniert nicht ganz so wie ich das wollte. Aber ich glaube, dass ich meinen Fehler erkannt habe. Ich habe zuerst einen Würfel kreirt , der genau an der selben Stelle wie die Kamera ist war. Deshalb hat es nicht funktioniert , denn wenn die Kamera sich verändert hat , dann hat auch der Würfel seine Position verändert . Dadurch kam es zu einem flackern. Jetzt habe ich den Gleichen Code wie für die Kamera verwendet. Mal sehen ob es funktioniert laugh

EDIT : PROBLEM GELÖST
DANKE NOCHMAL AN ALLE DIE MICH MIT IHREN TIPPS ETWAS WEITER GEBRACHT HABEN
© 2024 lite-C Forums