|
camera Kollision mit Wand in A7 benötigt
#348494
11/27/10 16:39
11/27/10 16:39
|
Joined: Nov 2010
Posts: 125 Germany
chrisp1
OP
Member
|
OP
Member
Joined: Nov 2010
Posts: 125
Germany
|
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 ?????
Last edited by chrisp1; 11/27/10 16:40.
|
|
|
Re: camera Kollision mit Wand in A7 benötigt
[Re: chrisp1]
#348510
11/27/10 18:49
11/27/10 18:49
|
Joined: Mar 2004
Posts: 92 Dresden
Revo
Junior Member
|
Junior Member
Joined: Mar 2004
Posts: 92
Dresden
|
alternativ must du halt jeden Frame zur camera tracen und die entfernung in deinen ersten vecot einsetzen ( leichter -> gelcih mit sin() positionioeren  ) 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.
|
|
|
Re: camera Kollision mit Wand in A7 benötigt
[Re: Revo]
#348552
11/28/10 10:14
11/28/10 10:14
|
Joined: Nov 2010
Posts: 125 Germany
chrisp1
OP
Member
|
OP
Member
Joined: Nov 2010
Posts: 125
Germany
|
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  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
Last edited by chrisp1; 11/28/10 10:30.
|
|
|
Re: camera Kollision mit Wand in A7 benötigt
[Re: chrisp1]
#349991
12/13/10 01:49
12/13/10 01:49
|
Joined: Apr 2005
Posts: 4,506 Germany
fogman
Expert
|
Expert
Joined: Apr 2005
Posts: 4,506
Germany
|
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).
no science involved
|
|
|
Re: camera Kollision mit Wand in A7 benötigt
[Re: chrisp1]
#352065
12/31/10 09:43
12/31/10 09:43
|
Joined: Dec 2010
Posts: 8
SQS
Newbie
|
Newbie
Joined: Dec 2010
Posts: 8
|
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.
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 ;)
}
Last edited by SQS; 12/31/10 09:46.
|
|
|
Re: camera Kollision mit Wand in A7 benötigt
[Re: SQS]
#352078
12/31/10 12:07
12/31/10 12:07
|
Joined: Nov 2010
Posts: 125 Germany
chrisp1
OP
Member
|
OP
Member
Joined: Nov 2010
Posts: 125
Germany
|
Ä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  EDIT : PROBLEM GELÖSTDANKE NOCHMAL AN ALLE DIE MICH MIT IHREN TIPPS ETWAS WEITER GEBRACHT HABEN
Last edited by chrisp1; 12/31/10 12:54.
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|