KI-Bewegungen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

N0X

Betreff: KI-Bewegungen

BeitragSa, Jan 16, 2010 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich möchte gerne meine KI immer zufällig nach links (rechts, oben, unten) bewegen lassen. (In einer flüssigen Bewegung) Leider habe ich aber überhaupt keinen Ansatz wie ich das machen könnte.
Wie kann ich das am besten realisieren?

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Xeres

Moderator

BeitragSa, Jan 16, 2010 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Eine Variable für die Richtung.
2. Ein Timer, der alle X ms die Richtung ändert. (millisecs)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DaysShadow

BeitragSa, Jan 16, 2010 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest statt einen Timer zu benutzen auch einfach die Schritte zählen die das Objekt gegangen ist und nach einer z.B. zufällig festgelegten Anzahl an Schritten(die du falls gewollt bei jedem Richtungswechsel änderst) die Richtung ändern.

MfG DaysShadow
Blessed is the mind too small for doubt

N0X

BeitragSa, Jan 16, 2010 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke!
Ich hab's jetzt so versucht:

Code: [AUSKLAPPEN]
   For w.wolf = Each wolf
      PositionEntity w\mesh,w\x#,w\y#,w\z#
      RotateEntity w\mesh,w\pitch,w\yaw,w\roll
      
      If move < MilliSecs() Then
         move = MilliSecs() +5000
         richtung=Rnd(0,1)
         stopp=0
      EndIf
      If m < MilliSecs() Then
         m = MilliSecs() +3000
         stopp = 1
      EndIf
      
      If w\yaw<=0 Then
         If stopp=0
         If richtung=0 Then w\x=w\x-Rnd(0.3,0.5)
         If richtung=1 Then w\z=w\z-Rnd(0.3,0.5)
         EndIf
      EndIf
      If w\yaw>=0 Then
         If stopp=0
         If richtung=0 Then w\x=w\x+Rnd(0.3,0.5)
         If richtung=1 Then w\z=w\z+Rnd(0.3,0.5)
         EndIf
      EndIf
   Next


Klappt auch ganz gut!
Danke!
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

N0X

BeitragSa, Jan 16, 2010 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
So!
Geht ja alles schon ganz gut, aber wie mach ich das, dass sich jedes Mesh unterschiedlich bewegt?
Im Moment laufen die ja alle in einer "Gruppe". (Wie EIN Mesh.)

Mfg,
N0X
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

mpmxyz

BeitragSa, Jan 16, 2010 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst die betreffenden Variablen nur zu Type-Fields machen. (move, richtung etc.)
Dann hat jedes Objekt seine eigene Richtung und seinen eigenen Timer.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

N0X

BeitragSa, Jan 16, 2010 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, dankeschön! Smile
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group