Gegner bewegen
Übersicht BlitzBasic Blitz3D
dreamfileBetreff: Gegner bewegen |
Mo, Jan 05, 2004 2:15 Antworten mit Zitat |
|
---|---|---|
Hallo,
ich wies ich bin neu aber ich finde im Netz nichts mehr, die meisten Handbücher sind für 2 D und ich habe keinen Schimmer wie ich einen Gegner durch die Gegend laufen lasse. Bitte helft mir - Danke Grüschen Sascha |
||
Der Neue |
Xenon |
Mo, Jan 05, 2004 2:25 Antworten mit Zitat |
|
---|---|---|
such dir ein gutes KI Tutorial auf www.robiste.de
den KI sachen kann man, vorrausgesetzt, man hat ein Hirn und kann Programmieren ganz leicht von 2D auf 3D übertragen |
||
@uzingLG |
Mo, Jan 05, 2004 8:52 Antworten mit Zitat |
|
---|---|---|
schau dir mal die Befehle PositionEntity, MoveEntity, RotateEntity und TurnEntity in der Referenz an. | ||
dreamfile |
Mo, Jan 05, 2004 14:44 Antworten mit Zitat |
|
---|---|---|
http://www.robiste.de/ is dead. | ||
Der Neue |
dreamfile |
Mo, Jan 05, 2004 14:50 Antworten mit Zitat |
|
---|---|---|
@uzingLG
Danke schon mal, ich habe mit diesen Befehlen auch schon viel probiert aber irgendwie bewegt sich nichts. Könnte jemand so nett sein und mir eine Bewegung mit einem .3ds schreiben zb. das es eine oval oder kreis abfährt besser wäre ein viereck das abgefahren wird. das .3ds ersetzte ich dann gegen meins. möchte nur ein kleines erfolkserlebniss mit dem ich weitermachen kann. Danke schon mal Grüschen Sascha |
||
Der Neue |
Master C |
Mo, Jan 05, 2004 15:47 Antworten mit Zitat |
|
---|---|---|
dreamfile hat Folgendes geschrieben: http://www.robiste.de/ is dead.
Könnte daran liegen, dass es "robsite" und nicht "robiste" heißen muss |
||
Jan_Ehemaliger Admin |
Di, Jan 06, 2004 9:39 Antworten mit Zitat |
|
---|---|---|
http://www.robsite.de
das mit der KI ist nicht so einfach! hier mal ein ausschnitt: Code: [AUSKLAPPEN] Function UpdateEnemy( pl,anz ) If player(pl,0) > 0 Then ;muffe=Player(pl,6) m=0 dis =0 If Wachsam < 0 Then wachsam = 0 If Wachsam > 480 Then wachsam = 480 player(pl,5)=player(pl,5)-1 weapons(pl,0,1) = weapons(pl,0,1)- 1 ;-----------Spieler in sicht--------------------- dis=EntityDistance# (player(pl,0), player(0,0)) If dis < Gegnerklassenwerte(3,Player(pl,6)) + (Wachsam/Gegnerklassenwerte(4,Player(pl,6))) m=EntityVisible (player(0,0),player(pl,0)) End If ;------------Waypointauswahl--------------------- If EntityDistance# (player(pl,0), flag(pl,player(pl,4),3)) <15 Then player(pl,4)=player(pl,4)+1 If player(pl,4)>flagvariable(pl) Then player(pl,4)=0 ;-----------Drehen und schießen------------------ If m >0 Or player(pl,5) > 0 Then gs = DeltaYaw# (player(pl,0), player(0,0)) If gs > Gegnerklassenwerte(5,Player(pl,6))+(Wachsam/Gegnerklassenwerte(6,Player(pl,6))) And gs < (360-Gegnerklassenwerte(5,Player(pl,6)))-(Wachsam/Player(pl,6)) Then letztfetz=1 If letztfetz >0 ;Or player(pl,5) < 1 Then gs = DeltaYaw# (player(pl,0), flag(pl,player(pl,4),3)) ;angriff = 0 Else If m>0 Then Wachsam=Wachsam+(m*3) If player(pl,5) < Gegnerklassenwerte(10,Player(pl,6)) Then player(pl,5) = Gegnerklassenwerte(10,Player(pl,6)) gsz=Botbewegungsrichtung+Player(pl,10) If gsz < 250 Then gsz=gsz+Gegnerklassenoptionen#(6,Player(pl,6)) If gsz> 250 Then gsz = 250 End If If gsz > 250 Then gsz=gsz-Gegnerklassenoptionen#(6,Player(pl,6)) If gsz< 250 Then gsz = 250 End If berechnet=(gsz-250)/100 If berechnet = 0 Then AnimateMD2 player(pl,1),1,0.15,40,46,1 If weapons(pl,0,1)<1 Then If weapons(pl,0,1)<0 Then weapons(pl,0,1)=0 weapons(pl,0,1) = weapons(pl,0,1)+ 6 CreateBullet(pl,anz) End If End If End If End If Else gs = DeltaYaw# (player(pl,0), flag(pl,player(pl,4),3)) End If ;--------Drehungsredius beschränken-------------- If gs > Gegnerklassenwerte(9,Player(pl,6)) Then gs=Gegnerklassenwerte(9,Player(pl,6)) If gs < -Gegnerklassenwerte(9,Player(pl,6)) Then gs=-Gegnerklassenwerte(9,Player(pl,6)) ;----------Bewegungen, die immer ausgeführt werden GraueZelle=EntityY(player(pl,0)) z=(Gegnerklassenoptionen#(5,Player(pl,6))*player(pl,9)) If GraueZelle - player(pl,8) = z Then player(pl,9)=player(pl,9)+Gegnerklassenoptionen#(8,Player(pl,6)) z=(Gegnerklassenoptionen#(5,Player(pl,6))*player(pl,9)) Else player(pl,9)=1 End If player(pl,8)=GraueZelle TranslateEntity player(pl,0),0,-z,0 TurnEntity player(pl,0),0,gs,0 ;---------Laufen--------------------------------- If m=0 Then MoveEntity player(pl,0),0,0,Gegnerklassenoptionen#(0,Player(pl,6)) TranslateEntity player(pl,0),0,Gegnerklassenoptionen#(5,Player(pl,6))-0.03,0 Else If player(pl,5) > 0 ;ausweich = 0 If schussgeloest>0 Then gsz=Botbewegungsrichtung+Player(pl,10) If gsz < 250 Then gsz=gsz+Gegnerklassenoptionen#(6,Player(pl,6)) If gsz> 250 Then gsz = 250 End If If gsz > 250 Then gsz=gsz-Gegnerklassenoptionen#(6,Player(pl,6)) If gsz< 250 Then gsz = 250 End If berechnet=(gsz-250)/100 berechnet =berechnet * Gegnerklassenoptionen#(2,Player(pl,6)) If berechnet > Gegnerklassenoptionen#(6,Player(pl,6)) Then berechnet = Gegnerklassenoptionen#(6,Player(pl,6)) If berechnet < -Gegnerklassenoptionen#(6,Player(pl,6)) Then berechnet = -Gegnerklassenoptionen#(6,Player(pl,6)) ;If dis > 50 Then MoveEntity player(pl,0),berechnet,0,0 ;End If Else If weapons(pl,0,1)<1 Then If dis > Gegnerklassenwerte(8,Player(pl,6)) Then MoveEntity player(pl,0),0,0,Gegnerklassenoptionen#(1,Player(pl,6)) End If ;End If End If If weapons(pl,0,1)<1 Then If dis < 20 Then MoveEntity player(pl,0),0,0,Gegnerklassenoptionen#(1,Player(pl,6)) End If Else MoveEntity player(pl,0),0,0,Gegnerklassenoptionen#(0,Player(pl,6)) End If End If ;------------------------------------------------ End If End Function |
||
between angels and insects |
dreamfile |
Di, Jan 06, 2004 13:22 Antworten mit Zitat |
|
---|---|---|
DANKE Jan_
ich war schon am verzweifeln, habe gestern das Buch: "Spiele programmieren mit Blitz Basic" von Markt & Technik gekauft und noch bis 4 Uhr morgens drangesessen. Leider ist das meiste (brauchbare) aus dem Buch wiedermal für 2D geschrieben. Habe jetzt aus dem Kopf schon eigene Befehle zusammen gestellt und es läuft auch recht gut. Der Nebel vor den Collisionsbefehlen lichtet sich auch langsam. Mit den Bewegungen dachte ich an eine vorgegeben Stecke die der Gegner abfährt. Es soll ein Rennspiel werden. Ich schau mal auf der HP http://www.robsite.de Danke für deine Hilfe, grüschen Sascha |
||
Der Neue |
Jan_Ehemaliger Admin |
Di, Jan 06, 2004 14:27 Antworten mit Zitat |
|
---|---|---|
Achtung:
Auf Waypoint ausrichten, wenn distanz kleiner als 10 ist dann auf nächsten waypoint ausrichten! Ansonsten die Bewegungen global machen, und genau die gleiche möglichkeiten und beschränkungen wie der Player bei bedarf erläutere ich details noch genauer, aber probiere erstmal damit es hinzukriegen! |
||
between angels and insects |
INpac |
Di, Jan 06, 2004 15:36 Antworten mit Zitat |
|
---|---|---|
(hab mir deinen code nicht ganz durchgelesen)
Egoshooter-KI sollte aber auch selbstständig einen Weg finden können, oder eben Waypoints setzen können, zB an die letzte stelle, wo ein KI-Objekt den Player sah. So kann man 2 Modi einbauen: 2D-Pathfinding, also X- und Z-Dimension, und 3D-Waypointabsuche. Aber: ich muss sagen, KI ist wirklich nicht einfach, ich code ja auch schon länger an der Mentira-KI, und hossa, gar nicht so leicht. |
||
Jan_Ehemaliger Admin |
Di, Jan 06, 2004 15:54 Antworten mit Zitat |
|
---|---|---|
Yup inpac, ist ein ausschnitt!
KL, macht: läuft waypoints ab, bis der Player ins SICHTFELD kommt, greift ihn an (zulaufen, schießen, ausweichen) wenn gegner weg, laufen noch bis zum letzten sichtpuinkt, wenn nicht in neuer sicht, laufen zum Waypoints zurück! das sichtfeld erweitert sich, je aufmerksamer sie sind, welches durch schüße usw. geändert wird! Das gehört aber nicht in diese Topic! |
||
between angels and insects |
dreamfile |
Mi, Jan 07, 2004 10:06 Antworten mit Zitat |
|
---|---|---|
Moin,
wau danke für den Tip mit den Waypoints, leider habe ich mal wieder keinen Schimmer und war schon soooo stolz drauf meinen Gegener auf einer vorgegebenen Bahn fahren zu lassen. Es wird kein Shooter sondern soll ein Raceboat Spiel werden und es würde ein PC Gegner langen der schwer zu überholen ist. Ich habe den Code gerade in ein anderes Tread geschrieben aber hier nochmal meine Lösung die mir jetzt nicht mehr so toll vorkommt Code: [AUSKLAPPEN] ;ANIMATION BEWEGUNG
TurnEntity cube,0,0,0 RotateEntity cube,0,0,0 PositionEntity cube,284,1,454 SetAnimKey cube,0 RotateEntity cube,0,0,0 TurnEntity cube,0,-90,0 PositionEntity cube,314,1,484 SetAnimKey cube,10 RotateEntity cube,0,0,0 TurnEntity cube,0,-90,0 PositionEntity cube,454,1,484 SetAnimKey cube,20 RotateEntity cube,0,0,0 TurnEntity cube,0,-180,0 PositionEntity cube,484,1,454 SetAnimKey cube,30 RotateEntity cube,0,0,0 TurnEntity cube,0,-180,0 PositionEntity cube,484,1,314 SetAnimKey cube,40 RotateEntity cube,0,0,0 TurnEntity cube,0,-270,0 PositionEntity cube,454,1,254 SetAnimKey cube,50 RotateEntity cube,0,0,0 TurnEntity cube,0,-270,0 PositionEntity cube,314,1,254 SetAnimKey cube,60 RotateEntity cube,0,0,0 TurnEntity cube,0,-360,0 PositionEntity cube,254,1,314 SetAnimKey cube,70 RotateEntity cube,0,0,0 TurnEntity cube,0,-360,0 PositionEntity cube,284,1,454 SetAnimKey cube,80 AddAnimSeq cube,80 Animate cube,1 Ich werde mal nach diesen Waypoints schauen. Danke noch mal. Grüschen Sascha |
||
Der Neue |
Jan_Ehemaliger Admin |
Mi, Jan 07, 2004 13:11 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] AktuellerPunkt = 0
anzahl=5 Dim Waypoints(Anzahl) for s= 0 to 5 Waypoints(s)=createcube() PositionEntity Waypoints(s),Rand(-128,128),1,Rand(-128,128) next repeat Wenn Aktueller punkt in mit deltayaw/pitch nicht null dann drehen wenn distanz < 10 then aktueller punkt = aktueller punkt+1 if aktuellerpunkt > anzahl then aktuellepunkt=0 beschleunigen! until keyhit(1) Achtung nicht ausfürbar! |
||
between angels and insects |
dreamfile |
Mi, Jan 07, 2004 13:17 Antworten mit Zitat |
|
---|---|---|
hmmm
Das heist -128,128 = 0 ? Ne vergiss es da steige ich noch nicht durch, danke für deine unermüdliche Hilfe. Grüschen Sascha |
||
Der Neue |
Jan_Ehemaliger Admin |
Mi, Jan 07, 2004 13:20 Antworten mit Zitat |
|
---|---|---|
Rand = Randomizer = Zufallszahl im Bereich zwichen -128 und 128
nur zur erkläung mal genommen! |
||
between angels and insects |
INpac |
Mi, Jan 07, 2004 13:23 Antworten mit Zitat |
|
---|---|---|
da noch ein paar tipps:
1) Wenn die Waypoints alle auf 1 Ebene (Y-Wert gleich) liegen, musst du nicht EntityDistance() anwenden, sondern kannst (wenn auch nur minimal) Speed schonen, in dem du die Entfernung 2D ausrechnest, mit hilfe des Satzes des Pythagoras: Abstand=SQR((X1-X2)^2+(Z1-Z2)^2) 2) Waypoints müssen nicht mit Polygonobjekten erstellt werden, ist ja klar. Hier bei einem Würfel werden ja pro Cube 12 neue Polygone erstellt. Nimm lieber Pivots - die auch "Nullobjekte" genannt werden können 3) Um ein weiches Ausrichten zum nächsten Waypoint zu erhalten kannste einfach immer schrieben: TurnEntity dein_KI_Entity,0,DeltaYaw( dein_KI_Entity,nächster_Waypoint)/5,0 Je größer der Divisionsfaktor (wie auch immer der genannt wird..), desto träger dreht sich das Objekt zum Ziel. |
||
Jan_Ehemaliger Admin |
Mi, Jan 07, 2004 13:30 Antworten mit Zitat |
|
---|---|---|
[BesserwisserPart]
Yo, aber wenn du es zum 1. Mal hinbekommen möchtest, und wie man liest du ja nicht solange progst, dann nehme doch Cubes, damit du auch siehst, wo sie sind! Natürlich Später würden Cubes sich sehr schlecht machen! Aber man muss ja nur 1nen Befehl ändern. [/BesserwisserPart] [StolzverteidigungsPart] @INpac, ich glaube keum, das es was nützt, wenn du ihn jetzt sowas schon erkläst, wenn er -128,128=0 fragt! Das wäre wie wenn ich Julz erkläre, wie man Die KI mit dem VIS-Verbindet! [/StolzverteidigungsPart] Es ist Nichts Böse gemeint! |
||
between angels and insects |
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group