*erledigt* Frage zu Egoshooter

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Schnuff

Betreff: *erledigt* Frage zu Egoshooter

BeitragDo, Dez 29, 2005 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin gerade(wieder) dabei einen Ego Shooter zu basteln und wollte Fragen:
1. [erledigt] wie kann ich die Maussteuerung Optimal menegen(kein geruckel)
2. [erledigt] wie mache ich das, dass die Kammera hochgucken kann, sie aber bei Z bewegeung nicht hoch Fliegt
3. [erledigt] ich habe Monster(Kugeln) erstellt und möchte sie von Punkt A nach Punkt B laufen lassen, ein Monster läuft tadellos Very Happy , das andere Aber, soll Dirgonal laufen und hört nicht auf zu laufen
4. [erledigt]wie mache ich ein Monster kurz zeitig rot(ich weiß, mit entity color aber bei mir geht es trotzdem nicht)

PS: ich bitte um Hilfe und nicht um Sätze wie:
Egoshooter sind viel zu schwer für anfänger,... Wink
  • Zuletzt bearbeitet von Schnuff am Di, Jan 03, 2006 14:23, insgesamt 3-mal bearbeitet

Mr.Keks

BeitragDo, Dez 29, 2005 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Egoshooter sind viel zu schwer für Anfänger...
MrKeks.net
 

Schnuff

BeitragDo, Dez 29, 2005 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
och menno, jetzt haben sich selbst die Moderatoren gegen mich verbündet Crying or Very sad
was hab ich denn gemacht Embarassed
hinter einen Schertz kommt immer dieser Smiley -> Wink <-

Living Dead

BeitragDo, Dez 29, 2005 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Abgesehen das Ego-shooter für Anfänger sind ( Wink -zufrieden?) kann mann z.B. bei deinem Kameraproblem einfach einen kleinen Pivot in die mitte der Kamera setzen und die Kamera dann den Punkt verfolgen lassen. Angenommen du willst die Figur zu einer Seite drehen dann drehst du den Punkt einfach -> die gechildete Camera macht das auch. Wenn du dann hoch kucken willst dann drehst du einfach die Kamera -> der Pivot dreht sich nicht.
Falls du`s nicht verstanden haben solltest dann benutz die Forumssuche für Ego-shooter. Da wirst du ne Menge finden und etwa 60% davon haben ganz genau das gleiche Problem.

Was du mit geruckel der Maus meinst verstehe ich icht ganz.
Und wie du das mit den Monstern machst wär hilfreich wenn du da bisschen Code oder so Posten würdest also wie du die Bewegung von A nach B machst.

Für solche Fälle wie einem gefärbten Monster gibt es eigentlich keine so gute möglichkeit wie mit entitycolor also solltest du auf alle Fälle noch ein bisschen ausprobieren. Ansonsten mach doch einfach eine rote textur drauf.
Das Leben ist der Weg.
Der Tod ist das Ziel.
 

Schnuff

BeitragDo, Dez 29, 2005 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Geruckel Code:
TurnEntity Kammera[1],0,(MouseXSpeed()*(-1))/4,0

Monster von A nach B:
BlitzBasic: [AUSKLAPPEN]
For Mon.Monster=Each Monster
If EntityX(Mon\Mesh)=Mon\XEnd And EntityY(Mon\Mesh)=Mon\YEnd And EntityZ(Mon\Mesh)=Mon\ZEnd Then
PositionEntity MeshAusrichter,Mon\XAnf,Mon\YAnf,Mon\ZAnf : PointEntity Mon\Mesh,MeshAusrichter
ElseIf EntityX(Mon\Mesh)=Mon\XAnf And EntityY(Mon\Mesh)=Mon\YAnf And EntityZ(Mon\Mesh)=Mon\ZAnf Then
PositionEntity MeshAusrichter,Mon\XEnd,Mon\YEnd,Mon\ZEnd : PointEntity Mon\Mesh,MeshAusrichter
EndIf
MoveEntity Mon\Mesh,0,0,Mon\MGes#
Next

aber es muss doch noch ne andere möglichkeit geben...
wenn nein, wie kann man ausrechenen welche geschwindigkeit ein Monster haben muss?

PS:
Zitat:

Abgesehen das Ego-shooter nicht für Anfänger sind ( Wink -zufrieden?)

Living Dead

BeitragFr, Dez 30, 2005 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde Ego-Shooter sind wirklich gar nicht so schlecht für Anfänger. Bloß eben nichts für welche die keine Ahnung davon haben was mann selbst realisieren kann. Aber sonst sehe ich kein unschaffbares Problem für Anfänger vorausgesetzt natürlich sie stellen ein paar Fragen nach Techniken und verwenden doe Forumssuche und haben ein gutes Tutorial wie das von Inpac genau gelesen. Es gibt keine benötigte Physik. Mann muss keine Figur oder so vor die Kamera setzen was jegliche Fischaugenkorrektur ersetzt. Mann simpelste Kollisionsabfragen verwenden weil man nirgendwo hochklettern muss oder so. und für den Anfang reichen ein paar Kugeln als gegner. Also welches Element soll ein Anfänger nicht lösen können mit ein bischen Hilfe immer den Fall gestzt das es auch wirklich ein anfänger Ego shooter zum üben ist und nicht ein Klon des neuesten Teils von Doom. Warum machst du es eigentlich gleich so schwer mit der Maus. Warum reicht dir denn nicht erstmal einfach immer alles um Mousespeed x/y zu drehen ohne zu dividieren und so?
Ansonsten probier vielleicht mal noch ne eigene drehgeschwindigkeitsvariable zu machen. Da machst du dann

Code: [AUSKLAPPEN]

if mousespeed() > 4 and mausgeschwindigkeit# < 10 then mausgeschwindigkeit# =mausgeschwindigkeit# + 1

mausgeschwindigkeit# = mausgeschwindigkeit# - 0.5



Die Werte müsstest du noch verändern weil ich keine Ahnung habe welche Werte man nun nehmen muss. Ich weis auch nicht ob das jetzt so funktioniert. Sonst kannst das ganze ja noch ein wenig erweitern. Abgesehen davon das du noch ne Sperre brauchst das der nicht zuweit die Kamera nach oben dreht sonst passieren da ganz komische Sachen. Ich glaube der Code müsste sowieso so einen modernen effekt bringen das selbsgt wenn mann die maus still hält der Bildschirm noch ein Stück weiter dreht weil der ja ne eigene Geschwindigkeit hat.
Mit den Monstern kann ich dir jetzt ´nicht helfen weil ich mich damit überhaubt nich auskenne, ich keine Idee habe und meine Finger langsam wieder die kleine Pause brauchen könnten nach solchem langem Post.
Das Leben ist der Weg.
Der Tod ist das Ziel.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Dez 30, 2005 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1) Beispiel:Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()
HidePointer

xp#=0
yp#=0
xg#=0
yg#=0


While Not KeyHit(1)

 xg=(xg+MouseXSpeed())/1.6
 yg=(yg+MouseYSpeed())/1.6
 xp=xp+xg
 yp=yp+yg

 MoveMouse 200,200

 If xp>400 Then xp=0
 If xp<0 Then xp=400
 If yp>400 Then yp=0
 If yp<0 Then yp=400

 Rect xp-4,yp-4,9,9,0

 Flip
 Cls
Wend
End


Zu 2) Anstelle MoveEntity, nimm TranslateEntity... Ist letztendlich Geschmacksache was wer bevorzugt. Ich selber mag relative Bewegungen nicht.

Zu 3) Suche nach vektororientierter KI.

Zu 4) Siehe OH über EntityColor...Zitat:
Beachte! Wenn der Wert 2 mit BRUSHFX oder ENTITYFX gesetzt wurde, dann hat dieser Befehl keine Wirkung, stattdessen wird Vertex-Farbe benutzt.
 

Schnuff

BeitragSo, Jan 01, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist "vektororientierter KI" in der Onlinehilfe habe ich nichts genaues dazu gefunden Embarassed
ich habe jetzt versucht, das Problem mit Entitydistance zu lösen, da ruckeln aber die Monster die ganze zeit, wenn sie die Mitte ereichen
ich benutze Folgenden Code:
Code: [AUSKLAPPEN]

Type Monster
   Field Mesh ; Mesh Speicher Platz
   Field Ges  ; Gesundheit(in Prozent)
   Field MGes#; Mesh Geschwindigkeit
   Field XAnf;ang
   Field YAnf;ang
   Field ZAnf;ang
   Field XEnd;e
   Field YEnd;e
   Field ZEnd;e
   Field EC; Vor kurzem Getroffen?
   Field Dis#; Letzte Distance
   Field Richt; Richtung (0=zum ende gehen)
End Type

; Schleife

For Mon.Monster=Each Monster
   MoveEntity Mon\Mesh,0,0,Mon\MGes#
   
   If Mon\Richt=0 Then; vom Anfang
      PositionEntity MeshAusrichter,Mon\XEnd,Mon\YEnd,Mon\ZEnd
   ElseIf Mon\Richt=1 Then; Vom Ende
      PositionEntity MeshAusrichter,Mon\XAnf,Mon\YAnf,Mon\ZAnf
   EndIf
   
   If Mon\Dis#>EntityDistance#(Mon\Mesh,MeshAusrichter) Then
      Mon\Dis#=EntityDistance#(Mon\Mesh,MeshAusrichter)
   ElseIf Mon\Dis#<=EntityDistance#(Mon\Mesh,MeshAusrichter) Then
      If Mon\Richt=0 Then PositionEntity MeshAusrichter,Mon\XEnd,Mon\YEnd,Mon\ZEnd
      If Mon\Richt=1 Then PositionEntity MeshAusrichter,Mon\XAnf,Mon\YAnf,Mon\ZAnf
      Mon\Richt=1 Xor Mon\Richt
      Mon\Dis#=EntityDistance#(Mon\Mesh,MeshAusrichter)
      PointEntity Mon\Mesh,MeshAusrichter
   EndIf
Next

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jan 02, 2006 0:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Schnuff, mit vektororientiert meinte ich die Auswertung durch ein Koordinatensystem nicht einem Schachbrettartigem gerippe. Also eine Pathfinding (wenn überhaupt notwenig) der Gegner zu ihrem Ziel. Damit meine ich, das die Gegner ihr Ziel genau verfolgen und wenn Hindernisse auf dem Weg dorthin liegen es auf dem besten Wege umgehen können (wie Menschen es halt auch tun) und nicht bei nicht direkter Sichtlinienverbindung zum Ziel anfangen eine art Schachbrettmuster abzulaufen, nur weil die Pathfinding eines solchen wesentlich einfacher zu programmieren sind.

Der Grund für dein ruckelartigen Bewegungen der Monster liegt (so denke ich mal, soweit ich das sehe) an folgendem: Erst machst du eine Abfrage ob der Abstand groß genug ist, wenn ja dann bewegst du das Monster. Wenn der Abstand zu klein ist, bewegst du das Monster auf den Mindestabstand... Bei der nächsten Abfrage ist dieser wieder groß genug um das Monster ein Schritt näher tretten zu lassen usw. usw.

Bewege mal erst das Monster wohin es gehen möchte und dann frage den Abstand ab. Ist dieser zu klein bewege das Monster dann wieder auf den Mindestabstand. Das sollte gehen...
 

Schnuff

BeitragMo, Jan 02, 2006 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
wie soll dieses vector... den funktionieren, habe absolut keinen Plan Embarassed
außerdem verschiebe ich dass Monster und danach Prüfe ich, ob es über das Ziel hinausschießt Smile

momentan möchte ich es nur hinkriegen, dass das Monster von zB:
0,0,0
nach
100,0,10
fährt/läuft

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jan 02, 2006 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Schnuff, hier mal ein Beispiel wie man ein Monster in eine Richtung spielen lassen kann. Die Koordination auf wie 3D-Welt kannst du ganz leicht umschreiben.Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()

mx%=0 ;Maus-X-Position
my%=0 ;Maus-Y-Position
xp#=100 ;Monster-X-Position
yp#=100 ;Monster-Y-Position
rw#=90 ;Monster-Winkelposition
rr#=0 ;Berechneter Winkel Monster/Spieler




;Hauptschleife
While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 ;Winkel zwischen Monster/Spieler
 rr=ATan2(my-yp,mx-xp)
 ;Monsterwinkel dem Spieler zuwenden
 rw=rw+Sgn(Sin(rr-rw))*2

 ;Nur wenn Monster nicht nah genug ist
 ;soll zum Spieler (Maus) bewegt werden
 If Sqr((mx-xp)^2+(my-yp)^2)>20 Then
  xp=xp+Cos(rw)/2
  yp=yp+Sin(rw)/2
 End If

 ;Zeichnen
 Color 255,0,0
 Line xp,yp,xp+Cos(rw)*10,yp+Sin(rw)*10
 Color 255,255,255
 Rect mx-4,my-4,9,9,0
 Oval xp-4,yp-4,9,9,0

 Flip
 Cls
Wend
End
 

Schnuff

BeitragMo, Jan 02, 2006 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm, ich progge ein 3D Spiel Rolling Eyes
kann es sein, dass du die ganze zeit von 2D redest Laughing
 

Dreamora

BeitragMo, Jan 02, 2006 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wegfindung findet dennoch in 2D statt solange man keine Quake ähnlichen Level hat mit mehreren Ebenen (dort läuft eh ein Grossteil über Pfadnetzwerke). Die 3te Dimension wird ja durch die Bodenhöhe vorgegeben, die würde nur unnötige Rechenzeit verschwenden und die Berechnung unnötig verkomplizieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Schnuff

BeitragMo, Jan 02, 2006 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
OK dancke Embarassed
ich verstehe immer noch nicht, was ihr nir sagen wollt, ich werde versuchen müssen, es irgentwie hin zu kriegen Crying or Very sad

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jan 02, 2006 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Schnuff, wenn du eine Wegfindung auf der 2D-Ebene erstellt hast, dann könntest du genau diese auch auf die 3D-Welt übertragen. Wie es Dreamora bereits sagte. Du kannst dann die 2D-Y-Achse auf die 3D-Z-Achse umtragen und fertig ist. Ausser du hast noch Stockwerke, dann muß natürlich eine aufwendigere 'Pathfinding' proggen.
 

Schnuff

BeitragMo, Jan 02, 2006 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
ich möcht momentan nur das ein Monster von A nach B läuft *Verzweifel*
wenn es sein muss geht es noch durch wände, dass ist mir jetze egal Crying or Very sad *verzweifelt in die Tastatur beiß*



ich möchte nur, dass mein Monster jetzt nicht an Punkt B vorbei läuft, sondern dort wieder umdreht Crying or Very sad

Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad !

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Jan 03, 2006 4:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Schnuff, wo ist das Problem mein vorletzten Post in die 3D-Welt umzusetzen? Das ist doch ein Beispiel wie man ein Gegner in eine bestimmte Richtung ausrichten kann. In meinem Beispiel war es eben die Maus, die in einem Spiel du sein kannst.
Schnuff hat Folgendes geschrieben:
momentan möchte ich es nur hinkriegen, dass das Monster von zB:
0,0,0
nach
100,0,10
fährt/läuft
Somit sind 0,0,0 (xp#=0;yp#=0) die Startkoordinaten des Gegners und 100,0,10 (mx%=100;my%=10) die Zielkoordinaten. Wobei in 3D meist Y zu Z wird. Ansonsten kann man mit AlignToVector auch den Gegner an ein anderem Objekt ausrichten (endlich funzt das Beispiel der OH auch mal). Mit AlignToVector wird allerdings mit so ner 'smoothing' art zum Ziel ausgerichtet. Das heisst, daß der Gegner seine Zeit braucht bis er genau auf dich zuläuft.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group