Könnt ihr mir bei meinem Spiel weiterhelfen??
Übersicht

pinkbunnyBetreff: Könnt ihr mir bei meinem Spiel weiterhelfen?? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() mfg dimaster |
||
![]() |
dav3d |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke hectic, wenigstens einer der zu mir hält ![]() 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. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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) ; () () |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group