Probleme mit EGO-Shooter Kugeln(Dank gutem Forum gelöst;-))

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Lobby

Betreff: Probleme mit EGO-Shooter Kugeln(Dank gutem Forum gelöst;-))

BeitragSo, Mai 06, 2007 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich habe vor nicht allzulanger Zeit mal mit 3d begonnen und muss
ehrlich sagen, dass es einfacher ist, als ich angenommen habe.
Jetzt jedoch, bei einem meiner ersten richtigen 3d Spiele habe ich
Probleme mit den Kugeln, die ich über ein type erstelle, hier ist ein
Ausschnitt, aus dem Code:

Code: [AUSKLAPPEN]
For sch.schuss=Each schuss
MoveEntity sch\k,0,0,5
sch\zeit=sch\zeit+1
For cc=1 To CountCollisions(terrain)
If CollisionEntity(terrain,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next
For cc=1 To CountCollisions(monstercube)
If CollisionEntity(monstercube,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
monsterlife#=monsterlife#+mabzug#
EndIf
Next
For cc=1 To CountCollisions(mesh)
If CollisionEntity(mesh,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next
If sch\zeit>50 Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next

Es funktioniert zwar, dass die Kugeln sich nach einer Zeit auflösen,
aber die collisionsabfrage macht der irgendwie net, die Kugeln können
durch Objekte einfach durch.
Ich habe schon viele nach diesem Problem gefragt, aber bisher wusste
keiner eine Lösung, im Internet hab ich auch schon gesucht(ohne Erfolg).
Könnt mir bitte vielleicht jemand helfen, der etwas von 3d Kollisionen versteht?(Wenn jemand die antwort weiß, jedoch nichts von 3d-Kollisionen versteht, kann er sich dennoch melden Cool )
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux
  • Zuletzt bearbeitet von Lobby am Mi, Mai 09, 2007 21:33, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSo, Mai 06, 2007 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Manno, dein Code ist nicht eingerückt und mit kryptischen Varnamen versehen. Wie soll man da denn durchblicken ?

Zudem lässt sich anhand dieses Fragmentes nicht wirklich viel sagen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Lobby

BeitragSo, Mai 06, 2007 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja, ich hab schon ne menge probier, aber der bestätigt die if-zeilen nie Sad
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

BladeRunner

Moderator

BeitragSo, Mai 06, 2007 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
zum einen: Hast Du überhaupt Collisionstypen festgelegt (ql:collisions) ?
zum Anderen: Deine Schüsse werden nach 50 Schleifendurchläufen gekillt - ich kenne deinen Masstab in der Welt nicht, aber eventuell kommen sie einfach nicht weit genug um was zu treffen.
Und 50 Durchläufe sind je nach Rechner in weit weniger als einer Sekunde erreicht.

Lobby

BeitragSo, Mai 06, 2007 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, weitgenug kommen sie, und collisions typen hab ich auch festgelegt
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

BladeRunner

Moderator

BeitragSo, Mai 06, 2007 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wäre es dann mit dem ganzen Code? oder einer kleinen .zip zum testen ?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Lobby

Betreff: Hat sich erledigt,...

BeitragSo, Mai 06, 2007 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
ich hing jetzt schon seit tagen an dem problem, und kaum schreib ich ins
forum, find ich den fehler...

Dieses Thema kann gelöscht werden...(ich möchte nicht, dass jder meinen Code einliest)
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

BladeRunner

Moderator

BeitragSo, Mai 06, 2007 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast Du Angst jemand würde Deinen Code stehlen ?
Btw. wäre es für Nachfolgende interessant zu wissen wo der Fehler lag. Eventuell haben sie mal ein ähnlich gelagertes Problem.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Lobby

Betreff: Nunja...

BeitragSo, Mai 06, 2007 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt kommt immer wider der Fehler: Object does not exist!
Und mit dem, das das vielleicht anderen helfen könnte, hast
ja schon recht(mir hätte es bei meinem problem jetzt auch schon geholfen)
...
Genauso, möchte ich jetzt noch einschlagslöcher der kugeln machen, aber ich such erstmal richtig dannach... Confused
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Silver_Knee

BeitragSo, Mai 06, 2007 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ja dan schreib doch wenigstens den code-block wo das problem auftra und wie es bbeseitigt wurde. genauso könntest du jetzt den code-block in dem das "Object does..." auftaucht hier hinein stellen so könne wir die besser helfen...

Lobby

BeitragSo, Mai 06, 2007 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
der zeigt keine fehler zeile...
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

The_Nici

BeitragSo, Mai 06, 2007 19:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Er springt aber sicher zu einer Fehler-Zeile.

Silver_Knee

BeitragSo, Mai 06, 2007 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
mach den debugger an und da drin ist die fehlerhafte zeile markiert

Tankbuster

BeitragSo, Mai 06, 2007 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Oben in der Leiste... Program->Debug Enabled? oder so
Twitter
Download Jewel Snake!
Windows|Android

The_Nici

BeitragSo, Mai 06, 2007 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Debug nicht an wäre würde soweit ich weiss die Fehlermeldung ein MAV sein, oder?

Lobby

Betreff: Also...

BeitragDi, Mai 08, 2007 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
...hier ist meine ganze While - Wend schleife, falls es jemandem zu
unübersichtlich ist, es geht hier nur um untem ab dem updateworld...

Code: [AUSKLAPPEN]
;Loop
While 1
If ss>1 Then HideEntity sprite
ss=ss+1
If KeyHit(1) Then menuquest()
mx=MouseX()
my=MouseY()
yd=-(mx-(GraphicsWidth()/2))/2
xd=(my-(GraphicsHeight()/2))/2
If xd>19 Then xd=19
If xd<-19 Then xd=-19
TurnEntity cam,xd,0,0
TurnEntity p,0,yd,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
If sp>0 Then sp=sp-1

If EntityY(p)<ae Then
MoveEntity p,0+xg,-1+sp,g
If (KeyHit(57) Or KeyHit(82) Or KeyHit(56) Or KeyHit(157)) And sp=0 Then buffer=1 Else buffer=0
Else
g=0
xg=0
If KeyDown(200) Or KeyDown(42) Then
MoveEntity p,0,0,1
g=1
EndIf
If KeyDown(208) Or KeyDown(29) Then
MoveEntity p,0,0,-1
g=-1
EndIf
If KeyDown(203) Then
MoveEntity p,-2,0,0
xg=-2
EndIf
If KeyDown(205) Then
MoveEntity p,2,0,0
xg=2
EndIf
If rad()>0 Then
MoveEntity p,0,0,2
g=2
EndIf
If rad()<0 Then
MoveEntity p,0,0,-2
g=-2
EndIf
MoveEntity p,0,-0.01+sp,0
If (KeyHit(57) Or KeyHit(82) Or KeyHit(86) Or KeyHit(157)) And sp=0 Then sp=10
EndIf

If EntityPitch(cam)>70 Then RotateEntity cam,70,EntityYaw(cam),EntityRoll(cam)
If EntityPitch(cam)<-70 Then RotateEntity cam,-70,EntityYaw(cam),EntityRoll(cam)

If MouseHit(1) Or KeyHit(56) Then
ShowEntity sprite
ss=0
sch.schuss=New Schuss
sch\k=LoadMesh("objects\kugel.3ds")
ScaleEntity sch\k,0.003,0.003,0.003
EntityColor sch\k,180,140,0
PositionEntity sch\k,EntityX(gun,1),EntityY(gun,1)+0.5,EntityZ(gun,1)
TurnEntity sch\k,EntityPitch(gun,1),EntityYaw(gun,1)+1,EntityRoll(gun,1)
EntityType sch\k,5
Animate gun,3

If vc=1 Then
EmitSound auu,monstercube
EndIf
EndIf
monsterlife#=monsterlife#+mgenesung#


If seglen#(EntityX(monstercube),EntityZ(monstercube),EntityX(p),EntityZ(p))<20 And animatemonster=1 Then
animatemonster=0
AnimateMD2 monster,1,0.2,0,32
EndIf
If seglen#(EntityX(monstercube),EntityZ(monstercube),EntityX(p),EntityZ(p))>20 And animatemonster=0 Then
animatemonster=1
AnimateMD2 monster,1,0.2,32,60
EndIf

PointEntity monstercube,p

If animatemonster=1 Then
MoveEntity monstercube,0,-0.01,mg#
Else
yourlife#=yourlife#+eabzug#
EmitSound monster_m,monstercube
EndIf
yourlife#=yourlife#+egenesung#
If yourlife#>201 Then yourlife#=201
If monsterlife#>201 Then monsterlife#=201

MoveEntity sky,0,0,1

If CameraPick(cam,GraphicsWidth+mx,GraphicsHeight+my)=monstercube Then vc=1 Else vc=0
ae=EntityY(p)
monsterae=EntityY(monstercube)


UpdateWorld
For sch.schuss=Each schuss
MoveEntity sch\k,0,0,5
sch\zeit=sch\zeit+1
Next
For sch.schuss=Each schuss
If sch\zeit>50 Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next
For sch.schuss=Each schuss
For cc=1 To CountCollisions(monstercube)
If CollisionEntity(monstercube,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
monsterlife#=monsterlife#+mabzug#
EndIf
Next
Next
For sch.schuss=Each schuss
For cc=1 To CountCollisions(mesh)
If CollisionEntity(mesh,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next
Next


RenderWorld
If vc=0 Or vf=0 Then DrawImage v,(GraphicsWidth()/2)-40,(GraphicsHeight()/2)-40 Else DrawImage v2,(GraphicsWidth()/2)-40,(GraphicsHeight()/2)-40
leiste()
Flip
If gm=1 Then
FreeEntity p
FreeEntity terrain
FreeEntity mesh
FreeEntity sky
FreeEntity monstercube
FreeEntity h
Goto menu
EndIf
If monsterlife#<0 Then Goto winlevel
If yourlife#<0 Then Goto loselevel
Wend


Der Fehler wird an dieser Stelle angezeigt:
Code: [AUSKLAPPEN]
For sch.schuss=Each schuss
For cc=1 To CountCollisions(mesh)
If CollisionEntity(mesh,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next


Falls nochmals jemand die varriablen nicht richtig versteht, oder sich
mit den Namen nicht abfinden kann, dann kann ich ihm versichern, dass
es damit weniger zusammen hängt, da es normalerweise erst nach einer weile, wenn man schon viel geballert hat kommt!

-Danke für die GUTE Hilfe im Forum!-
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Silver_Knee

BeitragDi, Mai 08, 2007 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
For sch.schuss=Each schuss
For cc=1 To CountCollisions(mesh)
If CollisionEntity(mesh,cc)=sch\k Then
FreeEntity sch\k
Delete sch.schuss
EndIf
Next
ist es nicht schön mal zu übelegen dass alles wahr wäre.... und sich dann noch vorzusellen die mesh 2x kollidiert.... dann beides mal die schussmesh der auslöser war.... hmm beim ersten mal wird der schuss gelöscht also ist der einwand object does not exsist beim 2. mal bei diesem teil durchaus berechtigt:
If CollisionEntity(mesh,cc)=sch\k T

Lobby

BeitragDi, Mai 08, 2007 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
hey, stimmt, sogar, danke!
(wusste doch, dass dieses forum des beste für bb is, des
man in deutsch finden kann...(www.blitzforum.de.tt sin zu wenig user...))
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux

Lobby

BeitragDi, Mai 08, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
hat/hast jemand/du vielleicht noch einen tipp für die geplanten einschlagslöcher(als aus den mesh objekten in der texture)?

ok
TheoTown - Eine Stadtaufbausimulation für Android, iOS, Windows, Mac OS und Linux
  • Zuletzt bearbeitet von Lobby am Di, Mai 08, 2007 21:07, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragDi, Mai 08, 2007 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte benutze den editbutton, wenn du was zu einem post anfügen möchtest. Danke.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group