Mesh bewegen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

smeagle24

Betreff: Mesh bewegen

BeitragDi, Feb 24, 2009 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe folgendes Problem. Der Mesh soll wenn er den Player sieht und sobald eine gewisse Distanze zwischen beiden Objekten unterschritten wird, sich auf den Player zubewegen.
So habe ich das ganze mal probiert:
Code: [AUSKLAPPEN]
visible = EntityVisible(pistole,gegner)
entfernung = EntityDistance(pistole,gegner)
   
If visible = 1 And entfernung <=50
   MoveEntity gegner,EntityX(pistole),0,EntityZ(pistole)
EndIf

Nun habe ich folgendes kleines Problem. Sobald der Player sich den Mesh nähert entfernt sich dieser mit ruckartigen Bewegungen. Wie mach ich das nun aber so, das sich der Mesh in einer flissenden Bewegung dem Player nähert?

ToeB

BeitragDi, Feb 24, 2009 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
MoveEntity gegner, EntityX(pistole),0,EntityZ(pistole)


Was soll denn das darstellen oO ?
Damit findest du die X/Z Koordinatevon dem player heraus und erhöhst die X/Z Koordinaten des gegners genau um diesen wert, also wenn du in der reichwiete bist, ist es klar das er sich ruckartig von dir entfert...

Dreh erstmal mit AlignToVector oder PointEntity den gegner zu dem player und dann kannst du in der schleife mit MoveEntity gegner,0,0,MoveSpeed# ganz einfach zu dem player bewegen.

Wenn du den Ggener aber nur auf der Y (yaw)-Achse zu dir drehen lassen willst, und mit AlignToVector nicht klar kommst, mach es so :

Code: [AUSKLAPPEN]
TmpRotPiv = CreatePivot(gegner)
;In der schleife
If reichweite# <= 50 And entityVisible() = 1
PointEntity TmpRotPiv,Pistole
RotateEntity gegner,0,EntityYaw(TmpRotPiv,1),0
Endif


oder noch einfacher :
Code: [AUSKLAPPEN]
If bla und so weiter = 1
RotateEntity Gegner,0,DeltaYaw(Gegner,Pistole),0
EndIf


(Beide codes nicht getestet, sollten aber funtzen Wink )


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Xaymar

ehemals "Cgamer"

BeitragDi, Feb 24, 2009 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
AlignToVector

Beispiel:
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Cam = CreateCamera()
PositionEntity Cam, 0, -35, 0
TurnEntity Cam, -90, 0, 0
Light=CreateLight(1, Cam)

Mesh1 = CreateCube()
PositionEntity Mesh1, -30, 0, 0

Mesh2 = CreateCube()
PositionEntity Mesh2, 30, 0, 0
TurnEntity Mesh2, 90, 0, 0

While Not KeyHit(1)
   Cls
   
   TranslateEntity Mesh1, KeyDown(32)-KeyDown(30), 0, KeyDown(31)-KeyDown(17)
   
   RenderWorld
   
   Dist# = EntityDistance(Mesh1, Mesh2)
   Vis = EntityVisible(Mesh2, Mesh1)
   
   If Dist# < 50 And Vis = 1
      AlignToVector Mesh2, EntityX(Mesh2)-EntityX(Mesh1), 0, EntityZ(Mesh2)-EntityZ(Mesh1), 1, .1
      RotateEntity Mesh2, 0, EntityYaw(Mesh2), 0
      MoveEntity Mesh2, -.1, 0, 0
   EndIf
   Text 0, 0, Dist#
   Text 0, 15, DeltaYaw(Mesh2, Mesh1)  + " " + DeltaPitch(Mesh2, Mesh1)
   Flip
Wend


[edit]da war mal wieder jemand schneller
Warbseite
 

Kruemelator

BeitragDi, Feb 24, 2009 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder mit:

Code: [AUSKLAPPEN]
If visible = 1 And entfernung <=50
   PointEntity gegner,pistole
   MoveEntity gegner,0,0,Bewegungstempo#
EndIf


Gruß Kruemelator


Edit: Ach Mist! Das passiert wenn man zulange im der eigenen Codesammlung sucht! Laughing
 

smeagle24

BeitragDi, Feb 24, 2009 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Dnake für die schnelle Hilfe.
Das mit PointEntity denn Mesh ausrichten und in dann ganz einfach mit MoveEntity bewegen funktioniert einwandfrei.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group