Objekte anheften

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mDave

Betreff: Objekte anheften

BeitragMi, Apr 29, 2009 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Community,
(wahrscheinlich denkt ihr vom Titel her, dass ich auf EntityParent hinauswill. Aber dem ist nicht so.)

Ich suche eine Möglichkeit wie man Objekte an ein anderes heften kann und auch mit den Animationen mitgeht. Es müsste also an einem Punkt zB. Hand ausgerichtet sein und sich daran ausrichten.

Ich hoffe ihr versteht was ich meine und könnt mir helfen.


Mfg mDave

ComNik

BeitragMi, Apr 29, 2009 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
SOwas wie Slots???
Wie in rollenspielen?
3D oder 2D.
In 2D is das einfacher. In 3D weiß ich nicht.

Solltest du 2D wollen dann:
Code: [AUSKLAPPEN]

   player_x = <xkoordinate>
   player_y = <ykoordinate>

   ;Main Loop
   
   DrawImage player,player_x,player_y
  ;jetz kommtz
  DrawIMage objekt,player_x-10,player_y    ;zum Beispiel...



Aber wie gesagt, dass is nur 2D, ich schätze in 3D funktionierts ähnlich...

lg
WIP: Vorx.Engine

Noobody

BeitragMi, Apr 29, 2009 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Die einfachste Möglichkeit wäre, wenn du deinem Modell gleich einen Bone mit einem festen Namen ("Slot_Hand" oder so) verpasst.
Den Bone kannst du dann per FindChild raussuchen und dann das Objekt ganz normal per EntityParent an den Bone heften.

Wenn du keinen Bone zur Verfügung hast, dann kannst du stattdessen einen passenden Vertex suchen und per TFormPoint die globalen Koordinaten berechnen und das Objekt manuell positionieren.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

mDave

BeitragMi, Apr 29, 2009 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Entschuldigung, dass ich mich nicht klar genug ausgedrückt habe.
Ich meinte 3D (sry ComNik).

Danke euch beiden für die schnellen Antworten.
Ich werde Noobodys Rat folgen.


Mh...
es kommt eine Fehlermeldung "Entity does not exist".

Code: [AUSKLAPPEN]

Graphics3D 800,600,32,2
Timer=CreateTimer(25)
SetBuffer BackBuffer()

Objekt = LoadAnimMesh("schatten.b3d")
start = 1
ende = 20
ShockWaveOld=start

axt=LoadMesh("Heiltrank.b3d")
ScaleEntity axt,0.01,0.01,0.01


Local KameraShock
KameraPivot=CreatePivot()
Kamera = CreateCamera(KameraPivot)
PositionEntity KameraPivot,0,2.5,-6
;PointEntity Kamera,Objekt
RotateEntity Objekt,0,90,0
EntityShininess Objekt,0.1

Skin=LoadTexture("skin.png",1)
TextureBlend Skin,3
EntityTexture Objekt,Skin,0,1

AmbientLight 255,120,120
Licht = CreateLight(1,KameraPivot)
RotateEntity Licht,90,40,0
frame# = start

While Not KeyDown(1)

   
waffe=FindChild(Objekt,D2R)

    PositionEntity axt,EntityX(waffe),EntityY(waffe),EntityZ(waffe)

   TurnEntity Objekt,0,Abs(speed#)*2,0

   If KeyDown(203) Then speed# = speed# - 0.025
   If KeyDown(205) Then speed# = speed# + 0.025
   speed# = speed#/1.03
   Frame# = Frame# + speed#
   If Frame#+speed# < start Then Frame# = ende
   If Frame#+speed# > ende Then Frame# = start
   SetAnimTime Objekt,Frame#
   
   ShochWave=Int(Frame#)
   If (ShochWave=10 Or ShochWave=1) And ShochWave<>ShockWaveOld Then ShockTimer=20:ShockWaveOld=ShochWave
   ShockTimer=ShockCamera(Kamera,speed#/15,ShockTimer)
   
   UpdateWorld : RenderWorld
   Text 50,50,Int(Frame#)
   WaitTimer Timer
   Flip 0
Wend
End

Function ShockCamera(Camera,Power#=0.1,Shock)
   If Shock>0 Then
      PositionEntity Camera,Rnd(-Power#,Power#),Rnd(-Power#,Power#),Rnd(-Power#,Power#)
      Shock=Shock-1
   Else
      PositionEntity Camera,0,0,0
      Shock=0
   EndIf
   Return Shock
End Function


Die Objekte sind im richitgen Ordner.
Objekt ist das Objekt an dem sich axt ausrichten soll.
D2R ist der Bone.

Woran könnte die Fehlermeldung liegen?


Mfg mDave

Noobody

BeitragMi, Apr 29, 2009 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
waffe=FindChild(Objekt,D2R)

FindChild erwartet als zweiten Parameter den Namen des Objekts - und zwar in Form eines Strings. D2R muss also in Anführungszeichen stehen.

Ausserdem musst du die Waffe nicht in der Hauptschleife jedesmal neu finden und die Axt daran positionieren - du kannst auch einfach ganz am Anfang EntityParent anwenden:
Code: [AUSKLAPPEN]
Waffe = FindChild( Objekt, "D2R" )
EntityParent Axt, Waffe
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun
 

mDave

BeitragMi, Apr 29, 2009 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok jetzt klappt es.

Vielen Dank Noobody!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group