Könnt ihr mir bei meinem Spiel weiterhelfen??

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

pinkbunny

Betreff: Könnt ihr mir bei meinem Spiel weiterhelfen??

BeitragSa, Feb 25, 2006 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich hab seid kurzem Blitz3D und hab mei einem Spiel angefangen das fast jeder kennt. Das Spiel was ich meine ist das mit er Murmel die man durch Welten steuern muss, zBsp. Ballance. Meine Probleme sind zu einem mal die Texturen der Bahn und zum Anderen die Gravity, ich wieß nicht wie ich das machen soll, könn ihr mir helfen und mir ein paar Codevorschläge machen?

Das ist mein code:

Code: [AUSKLAPPEN]

;   ///////\\\\\\\\
;   //Murmelspiel\\
;   ///////\\\\\\\\

Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()

camera=CreateCamera()

light=CreateLight()
RotateEntity light,90,0,0

Bahn=LoadMesh("texturen und modelle/bahn.3ds")
Kugel=LoadMesh("texturen und modelle/Kugel.3ds")
T1= LoadTexture("texturen und modelle/Floor_Side.bmp")
T2= LoadTexture("texturen und modelle/Floor_Top_Flat.bmp")
T3= LoadTexture("texturen und modelle/Floor_Top_Profil.bmp")
T4= LoadTexture("texturen und modelle/Floor_Top_ProfilFlat.bmp")
T5= LoadTexture("texturen und modelle/Floor_Top_Borderless.bmp")
TM= LoadTexture("texturen und modelle/Ball_Wood.bmp")

RotateTexture T1,90
PositionTexture T1,0,0.5
EntityTexture bahn,T1

PositionEntity bahn,0,0,0

EntityTexture Kugel,TM
ScaleTexture TM,0.5,0.3333
PositionEntity Kugel,0,8,0


While Not KeyHit(1)

   If KeyDown(200) Then MoveEntity camera,0,0,1
   If KeyDown(208) Then MoveEntity camera,0,0,-1
   If KeyDown(203) Then MoveEntity camera,-1,0,0
   If KeyDown(205) Then MoveEntity camera,1,0,0
   RotateEntity camera,EntityPitch(camera)+MouseYSpeed(),EntityYaw(camera)-MouseXSpeed(),0
   MoveMouse 100,100
   
      
RenderWorld
Flip
Wend
End

;by pinkbunny

; (\   /)
;  \)_(/
;  (O,O)
;  (V V)
;  () ()

dimaster

BeitragSa, Feb 25, 2006 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
junge, junge
wiso musst du gleich mit sowas schwerem beginnen? versuchs doch erst ma mit einem 2d game bzw lern zuerst mal die grundlangen, dann wird es sicher einfacher sein sowas zu machen Rolling Eyes

mfg dimaster

dav3d

BeitragSo, Feb 26, 2006 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, kenne "Ballance" nicht. Nun es stimmt schon das man besser mal mit 2d anfangen sollte und sich dann mal weiterarbeiten, aber hohe Ziele sind auchnicht schlecht. Deine Entscheidung Wink . Nun Gravity, hmm ,sosachen sind als noch recht schwer. Ich hatte da mal vor lengerem was mit Beschleunigung versucht aber in 2D. hab dann aufgegeben als es akzeptabel war Laughing . kann dir im Moment grad nich helfen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 26, 2006 0:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo pinkbunny, ich nehme an das es so ein 'Tischspiel' sein soll. Richtig? Dann würde ich der Kugel eine Positionskoordiante geben, Beispiel: XPos#=, YPos#= und ZPos#=... und eine Gescheschwidigeitsvariable, Beispiel: XGes#=, YGes#= und ZGes#=... Die Rauten bedeuten das es eine Floatvariable ist. Wenn du jetzt die Fläche neigst, dann würde ich garnicht soviel Physik da ins Spiel bringen, sondern einfach die Geschwindigkeitsvariablen langsam in entsprechende Richtung erhöhen oder verringern... Je nachdem wie stark die Fläche geneigt ist, addierst du der Kugel deren Geschwindigkeitsvariablen... Damit die Position der Kugel auch beeinflusst wird, musst du bei jedem Schleifendurchlauf der Position die Geschwindigkeit hinzu addieren... Hier mal ein Beispiel:

XGes=XGes+Winkel der Neigung
XPos=XPos+XGes

Und das machst du dann noch für die Z-Variable... Y brauchst du hier eigendlich nicht, wenn du nicht möchtest das die Kugel auch irgendwo hinein fallen kann... Den übrigen Kramm kannst du dann ganz normal mit der Kollisionsabfrage machen...

Möchtest du noch ein kleinen Rollwiederstand da einbauen, so kannst du das so ganz einfach lösen... Dividiere bei jedem Schleifendurchlauf die Geschwindigkeitsvariablen durch eine festgelegte Zahl. Bei mir sieht das dann immer so oder so ähnlich aus: XGes=XGes/1.001 etc... Mit den Werten kannst du dann ein bischen rum spielen und den Rollwiederstand einstellen.

/EDIT: Jetzt fällt mir grad ein, du meinst sowas wie 'Marble Madness' oder wie früher mal hiess?! Macht aber nix, da die Berechnungen die selben sind. Nur das du hier die Neigung durch die Variable ersetzt, wenn eine Taste gedrückt wurde...
 

pinkbunny

BeitragSo, Feb 26, 2006 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke hectic, wenigstens einer der zu mir hält Very Happy .
Ich hab mal probirt und bin soweit gekommen doch jetzt weis ich überhaupt nicht mehr weiter. Kann mir jetz wieder jemand weiter helfen??
Währe schön.

Mein code:
Code: [AUSKLAPPEN]

;   ///////\\\\\\\\
;   //Murmelspiel\\
;   ///////\\\\\\\\

Graphics3D 1280,1024,32,1
SetBuffer BackBuffer()




camera=CreateCamera()

light=CreateLight()
RotateEntity light,90,0,0

Bahn=LoadMesh("texturen und modelle/bahn.3ds")
Kugel=LoadMesh("texturen und modelle/Kugel.3ds")
T1= LoadTexture("texturen und modelle/Floor_Side.bmp")
T2= LoadTexture("texturen und modelle/Floor_Top_Flat.bmp")
T3= LoadTexture("texturen und modelle/Floor_Top_Profil.bmp")
T4= LoadTexture("texturen und modelle/Floor_Top_ProfilFlat.bmp")
T5= LoadTexture("texturen und modelle/Floor_Top_Borderless.bmp")
TM= LoadTexture("texturen und modelle/Ball_Wood.bmp")

RotateTexture T1,90
PositionTexture T1,0,0.5
EntityTexture bahn,T1

PositionEntity bahn,0,-8,0

EntityTexture Kugel,TM
ScaleTexture TM,0.5,0.3333


PositionEntity camera,0,30,30



While Not KeyHit(1)
   RotateEntity camera,EntityPitch(camera)+MouseYSpeed(),EntityYaw(camera)-MouseXSpeed(),0
   MoveMouse 100,100
   

   XPos# = 0

   ZPos# = 0

   YPos# = 0

   If KeyDown(200)=1 Then XTasten# = -0.1
   If KeyDown(200)=0 Then XTasten# =  0   
   
   If KeyDown(208)=1 Then XTasten# =  0.1
   If KeyDown(208)=0 Then XTasten# =  0

   If KeyDown(203)=1 Then YTasten# =  0.1
   If KeyDown(203)=0 Then YTasten# =  0
   
   If KeyDown(205)=1 Then YTasten# = -0.1
   If KeyDown(205)=0 Then YTasten# =  0   

   XGes# =XGes#+XTasten#
   XPos# =XPos#+XGes#
   ZGes# =ZGes#+ZTasten#
   ZPos# =ZPos#+ZGes#
   YGes# =YGes#+YTasten#
   YPos# =YPos#+YGes#

   PositionEntity Kugel,YPos#,ZPos#,XPos#
   
RenderWorld
Flip
Wend
End

;by pinkbunny

; (\   /)
;  \)_(/
;  (O,O)
;  (V V)
;  () ()

------------------------
Außerdem kann ich meine Kugel nicht bewegen wenn XTasten# /YTasten# positiy ist.

D2006

Administrator

BeitragSo, Feb 26, 2006 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

gewöhne dir bitte mal an, hier im Forum Quelltext zwischen [code] und [/code] zu schreiben. Das hebt ihn farblich hervor und Einrückungen werden berücksichtigt, ergo ist ist einfach viel besser lesbar.

Ich nehme mir mal die Freiheit, dass bei den zwei bisherigen Codes zu korrigieren.

MfG
D2006
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 26, 2006 19:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo pinkbunny, auch wenn einige der Meinung sind, daß fertige Codeschnipsel den Gegenüber nicht wirklich helfen würde, so habe ich früher als es noch 'kein' Internet gab nur gelernt... Ich habe mir mal die Freiheit genommen und dein Code so modifiziert wie ich glaube du ihn haben willst. Allerdings habe ich deine Dateien nicht und habe das ganze nur mit einer Sphere gemacht die ich dann selber erstelle... Hoffe das dich das weiter bringt...Code: [AUSKLAPPEN]
;   ///////\\\\\\\\
;   //Murmelspiel\\
;   ///////\\\\\\\\

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,0,5,-20

light=CreateLight()
RotateEntity light,70,0,0

;Da ich deine Dateien nicht habe, erstelle ich mal 'dreisst' selber was :)
kugel=CreateSphere(12)

;MausSpeed-Variablen als Float damit die Werte später geteilt werden können
mxs#=0
mys#=0

;Hier diese gehören vor der Schleife!!!
XPos#=0
ZPos#=0
YPos#=0
XGes#=0
YGes#=0
ZGes#=0

;Info: Einmal als Float deffinierte Variablen bleiben immer Float!


While Not KeyHit(1)
   mxs=MouseXSpeed()
   mys=MouseYSpeed()
   MoveMouse 100,100

   RotateEntity camera,EntityPitch(camera)-mys/20,EntityYaw(camera)-mxs/20,0

   If KeyDown(200)=1 Then ZGes=ZGes+.01
   If KeyDown(208)=1 Then ZGes=ZGes-.01
   If KeyDown(203)=1 Then XGes=XGes-.01
   If KeyDown(205)=1 Then XGes=XGes+.01

   ;Rollwiederstand
   XGes=XGes/1.01
   ZGes=ZGes/1.01

   ;Positionierung
   XPos=XPos+XGes
   ZPos=ZPos+ZGes

   PositionEntity Kugel,XPos,YPos,ZPos
   
   RenderWorld
   Flip
Wend
End
 

pinkbunny

BeitragDi, Apr 18, 2006 20:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Na,
ich hab mir mal lange Zeit genommen (effektiv 3 Stunden) und mal den Code überarbeitet. Da kam mir die Idee die Kugel mit der Maus zu steuern.
Mein Problem ist jetzt aber das die X u. Y Wete der Maus nur positv sind und deswegen kann ich die Kugel nur begrenzt bewegen.
so hier mal ein Ausschnitt:
Code: [AUSKLAPPEN]

;   ///////\\\\\\\\
;   //Murmelspiel\\
;   ///////\\\\\\\\


XGes=MouseXSpeed()
ZGes=MouseYSpeed()

 ;Rollwiederstand
  XGes=XGes/1.015
  ZGes=ZGes/1.015

Ich bin wie immer dankbar für jede Antwort.

  ;Positionierung
  XPos=XPos+XGes
  ZPos=ZPos+ZGes*(-1)
  YPos=YPos-YGes

  ;Rotation
  ZRot=XPos*10*(-1)
  XRot=ZPos*10

   PositionEntity Kugel,XPos,YPos,ZPos
   RotateEntity Kugel,XRot,YRot,ZRot


;by pinkbunny

; (\   /)
;  \)_(/
;  (O,O)
;  (V V)
;  () ()

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Apr 18, 2006 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst dazu nach MouseXSpeed() und MouseYSpeed() die Maus auf eine andere Position als 0,0 bringen. Das kannst du am besten mit ql:MoveMouse ql:GraphicsWidth()/2,ql:GraphicsHeight()/2 machen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group