Bewegung eines ausgewählten Spieler?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Roggi

Betreff: Bewegung eines ausgewählten Spieler?

BeitragMi, Dez 20, 2006 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

ich habe zurzeit ein Problem. Ich code derzeit an einem sehr kleinen Fußballhallenspiel. Bisher bin ich für die letzten 2 Tage ganz gut voran gekommen. Doch nun tritt ein Problem auf. Ich habe es so gemacht, dass wenn man die Taste D drückt, der ausgewählte Spieler gewechselt wird. Man soll praktisch immer nur den ausgewählten Spieler steuern können. Der Spielerwechsel funktioniert auch gut, und es wird auch immer angezeigt das ein anderer Spieler ausgewählt ist, doch bei der darauffolgenden Bewegung klappt etwas nicht. Und zwar, wenn ich den Spieler wechsel und auf laufen drücke dann fängt einer an einen schritt zu laufen. Nun geht nichts mehr. Wenn ich nun die Nach-Vorn-Taste gedrückt halte und dazu immer d drücke, dann bewegen sich nach und nach alle Spieler mit. Aber nicht das ich nur einen steuer. mit jedem Tastendruck bewegen sich dann alle Spieler. Bitte helft mir bei diesem Problem. Hier der Sourcecode:

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SeedRnd MilliSecs()
WireFrame 0

Type Spieler
Field X#
Field Z#
Field Ausgewaehlt
Field Mesh
Field ID
End Type

Player=LoadMesh("models\player.3ds")
PositionEntity Player,10,0,5
ScaleEntity Player,20,20,20
RotateMesh Player,0,90,0



sprite=LoadImage("anzeige.bmp")

camera=CreateCamera(sphere1);den Teil mit einem -- im Kommentar bitte in den kollissionscode einfügen!!
RotateEntity camera,20,0,0;--
PositionEntity camera,x#,25,0;--

light = CreateLight (1)
RotateEntity light,90,0,0
PositionEntity light,0,10,10

terrain=CreateTerrain(512)

tex=LoadTexture("rasen.png")
SetBuffer TextureBuffer(tex)

;Color ;0,200,0
;Rect ;0,0,256,256
EntityTexture terrain,tex

x# = 0
y# = 0
z# = 30
sphere1= CreateSphere(32)
RotateEntity sphere1,0,-45,0
PositionEntity  sphere1,x#,y#,z#
EntityType sphere1,1
EntityColor sphere1,255,255,255

cube2=CreateCube()
PositionEntity cube2,70,20,90
EntityBox cube2,-70,-20,-10,70*2,20*2,2*2
EntityType cube2,3
ScaleEntity cube2,70,20,2
EntityAlpha cube2,0.75



Collisions 1,2,3,2
Collisions 1,3,3,2

xs# = -.0
ys# = 0   
zs# = .1
slow_down_x#=.05
slow_down_y#=.1
slow_down_z#=.05
collision=0


For I = 1 To 4
     Spieler.Spieler = New Spieler
     Spieler\ID= I
     Spieler\Mesh = CopyEntity (Player)
     Spieler\Z=Rand(0,40)
     Spieler\X=Rand(0,70)
     PositionEntity Spieler\Mesh,Spieler\X,0,Spieler\Z

Next


SetBuffer BackBuffer()

While Not KeyHit(1)
xkamera#=x#+kx#

PositionEntity camera,xkamera#,25,0

If KeyHit(32) = 1 Then
      Auswahl = Rand(1,4)
      For Spieler.Spieler = Each Spieler
      If Spieler\ID = Auswahl Then Spieler\Ausgewaehlt = True
   

      If Spieler\Ausgewaehlt Then
         If KeyDown(200)=1 Then MoveEntity Spieler\Mesh,xSpieler#,ySpieler#,1
            If KeyDown(208)=1 Then MoveEntity Spieler\Mesh,xSpieler#,ySpieler#,-1
            If KeyDown(203)=1 Then yaw#=yaw#+1.
            If KeyDown(205)=1 Then yaw#=yaw#-1.
         RotateEntity Spieler\Mesh,pitch#,yaw#,roll#
      EndIf
   Next   

EndIf

   

 ys# = ys# - .005

   If y# < 1 Then
      y# = 1
      ys# = -ys# * .6 - .03
   EndIf   
   
   y# = y# + ys#
   x# = x# + xs#
   z# = z# + zs#
   zs# = zs# * .99
   xs# = xs# * .99

   
   If MouseHit(1) Then
      ys# = .4
      xs# = Rnd(.9,.2)
      zs# = Rnd(1.5,0.5)
   EndIf
   
   If KeyHit(31)Then
   ys# = .0
      xs# = Rnd(.9,.2)
      zs# = Rnd(1.5,0.5)
   EndIf
 
   PositionEntity sphere1,x#,y#,z#
   
   UpdateWorld

     RenderWorld   
 
   Collision=EntityCollided(sphere1,3)


   If collision>0 Then
     
     collision = CountCollisions(sphere1)
     piv = CreatePivot()
     PositionEntity piv,CollisionX(sphere1,collision),CollisionY(sphere1,collision),CollisionZ(sphere1,collision)
     AlignToVector piv,CollisionNX(sphere1,collision),CollisionNY(sphere1,collision),CollisionNZ(sphere1,collision),3
     TFormVector xs,ys,zs,0,piv
     TFormVector TFormedX(),TFormedY(),-TFormedZ(),piv,0
     xs = TFormedX()
     ys = TFormedY()
     zs = TFormedZ()
     FreeEntity piv
           
    EndIf

   DrawImage sprite,5,5;--
   Color 0,0,0;--
   Text 45,28,m1+" : "+m2;--
   Color 255,255,255
   
   
   Text 50,50,Auswahl

   Flip
   
   Cls
Wend
End


Bin für jede Hilfe dankbar!

MfG Roggi

Markus2

BeitragMi, Dez 20, 2006 19:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst das ein bischen umständlich .
Warum machste dir nicht eine Variable wo der aktuelle Spieler
drin gemerkt wird .


Und das Spieler\Ausgewaehlt = True brauchste dann nicht mehr !
Außerdem setzt du Spieler\Ausgewaehlt nicht auf FALSE !!!
 

Roggi

BeitragMi, Dez 20, 2006 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja also im Type Spieler habe ich ja "Ausgewaehlt" vermerkt. das ist doch die Variable. Und was du mit False meinst, kann ich leider noch nicht nachvollziehen, bzw. habe ich übersehen. Bin weiterhin für Hilfe Dankbar.


MfG Tom

Markus2

BeitragDo, Dez 21, 2006 0:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Man soll praktisch immer nur den ausgewählten Spieler steuern können


Wenn du alle auswählst laufen auch alle , oder !???

Mit der Variable meine ich anders .

global SpielerAkt.Spieler


Mit For IrgendeinSpieler.Spieler = Each Spieler kannst du den Spieler suchen
if IrgendeinSpieler\ID=xx then SpielerAkt=IrgendeinSpieler :exit

Wenn du jetzt bei dem aktuellen Spieler Daten ändern möchtest kannst du direkt auf die Struktur zugreifen .
SpielerAkt\Punkte=
SpielerAkt\Ausdauer=
SpielerAkt\Bla=

Die Position hast du eigentlich schon über das Entity , macht aber nix .
 

Roggi

BeitragDo, Dez 21, 2006 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahja vielen Dank, erstmal. Ich werde das probieren sobald ich wieder zu Hause bin. Ich melde mich dann.


MfG Tom


Edit: Es klappt alles wunderbar, habe es so wie du sagtest probiert, dann funtionierte es, habe dann noch was grundlegendes am Code geändert und nun klappt es auch ohne den Teil von dir WinkSmile Trotzdem vielen vielen Dank. Ohne deiner Hilfe wäre ich nicht darauf gekommen da was zu ändern.
 

Roggi

BeitragDo, Dez 21, 2006 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
OK nun klappt alles wie gesagt super, doch nun habe ich ein anderes problem Embarassed Crying or Very sad Sad

Mit Entitybox habe ich das problem. Oben im Code, habe ich ja um ein einfachen Quader eine Collisionsbox gemacht. und nun will ich einfach zum probieren eine kleine Halle mit Banden ausprobieren, damit der Ball beim proben nicht mehr ins Aus kann. Aber nun komme ich mit Entitybox nicht mehr klar. Warum klappt es einfach nicht? Ich scheine heute wieder mal ein Brett vor dem Kopf zu haben Laughing Hier der Code vom Cube und unten von der Kollision mit dem Pivot in der Schleife:

Code: [AUSKLAPPEN]



cube2=LoadMesh("models\halle1.3ds")
RotateEntity cube2,0,90,0
PositionEntity cube2,50,0,100
EntityType cube2,3
EntityBox(cube2,50,0,100,4*2,7*2,5*2)
ScaleEntity cube2,4,7,5



Collisions 1,2,3,2
Collisions 1,3,3,2


in der schleife:
Code: [AUSKLAPPEN]

Collision=EntityCollided(sphere1,3)

   ;Text 0,14,EntityCollided(sphere1,3)

   If collision>0 Then
     
     collision = CountCollisions(sphere1)
     piv = CreatePivot()
     PositionEntity piv,CollisionX(sphere1,collision),CollisionY(sphere1,collision),CollisionZ(sphere1,collision)
     AlignToVector piv,CollisionNX(sphere1,collision),CollisionNY(sphere1,collision),CollisionNZ(sphere1,collision),3
     TFormVector xs,ys,zs,0,piv
     TFormVector TFormedX(),TFormedY(),-TFormedZ(),piv,0
     xs = TFormedX()
     ys = TFormedY()
     zs = TFormedZ()
     FreeEntity piv
       
     
           
    EndIf


Wer den Rest des Codes sucht, der ist im ersten Beitrag.

Die Datei der Halle ist hier:
http://www.Rotation.redio.de/hs/halle1.3ds

Danke für jede Hilfe!

MfG Tom

Markus2

BeitragDo, Dez 21, 2006 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Als Collision solltest du Kugel (Ball) zu Polygon (Halle) benutzen .
Oder willst du den Ball von außen auf die Halle schießen Wink

Collisionen gehen immer vom bewegten Objekt , also dein Ball aus .

EntityBox benutzt du außerdem falsch ...
die ersten Parameter beziehen sich auf eine Ecke .

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group