*erledigt* Frage zu Egoshooter
Übersicht

SchnuffBetreff: *erledigt* Frage zu Egoshooter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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,... ![]() |
||
- Zuletzt bearbeitet von Schnuff am Di, Jan 03, 2006 14:23, insgesamt 3-mal bearbeitet
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Egoshooter sind viel zu schwer für Anfänger... | ||
MrKeks.net |
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
och menno, jetzt haben sich selbst die Moderatoren gegen mich verbündet ![]() was hab ich denn gemacht ![]() hinter einen Schertz kommt immer dieser Smiley -> ![]() |
||
![]() |
Living Dead |
![]() Antworten mit Zitat ![]() |
---|---|---|
Abgesehen das Ego-shooter für Anfänger sind ( ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Geruckel Code:
TurnEntity Kammera[1],0,(MouseXSpeed()*(-1))/4,0 Monster von A nach B: BlitzBasic: [AUSKLAPPEN] For Mon.Monster=Each Monster 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 ( ![]() |
||
![]() |
Living Dead |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
was ist "vektororientierter KI" in der Onlinehilfe habe ich nichts genaues dazu gefunden ![]() 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 |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie soll dieses vector... den funktionieren, habe absolut keinen Plan ![]() außerdem verschiebe ich dass Monster und danach Prüfe ich, ob es über das Ziel hinausschießt ![]() momentan möchte ich es nur hinkriegen, dass das Monster von zB: 0,0,0 nach 100,0,10 fährt/läuft |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ähm, ich progge ein 3D Spiel ![]() kann es sein, dass du die ganze zeit von 2D redest ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
OK dancke ![]() ich verstehe immer noch nicht, was ihr nir sagen wollt, ich werde versuchen müssen, es irgentwie hin zu kriegen ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() ich möchte nur, dass mein Monster jetzt nicht an Punkt B vorbei läuft, sondern dort wieder umdreht ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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:
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.
0,0,0 nach 100,0,10 fährt/läuft |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group